Bir terminalin UTF-8'i destekleyip desteklemediğini bulma


21

CentOs 5'te CPAN modülünü perl için ayarlıyorum ve sorulardan biri 'Terminaliniz UTF-8'i destekliyor mu?' (Aktarılan). Nasıl öğrenirim?

Yanıtlar:


15

Gerçekten, test etmenin kesin yolu bir metin dosyası indirmek ve terminalde onu yakalamak ve her şeyin yolunda olup olmadığını görmek.

veya, eğer yapabilirseniz, unicode seçeneğini etkinleştiren terminali yeniden derleyin (varsayalım).

$ TERM ve $ LANG neye benziyor?


$ TERM "xterm" dır $ LANG "en_US.UTF-8" dır (aha!) Metin dosyası terminalde hoş bir şekilde görüntüleniyor, ama merakla Firefox'ta değil.
whatsit

evet, aslında aynı şeyle de karşılaştım: - / ... therek'in önerisini denediğimde soru işaretini aldım
theman_on_osx

$ LANG, stdout / stderr yazarken sisteminizin ne kullanacağını söyler. Terminalin yetenekleri hakkında hiçbir şey söylemez. Ancak, sisteminizde garip karakterlerin yazdırdığı her şey yolunda görünüyorsa, terminaliniz muhtemelen UTF-8'i desteklemektedir.
Epcylon

2
Bu, bir metni göstererek ve genişliğini kontrol ederek (önce ve sonra imleç konumunu okuyarak) otomatikleştirilebilir. Başka bir şey öneren bir kavram kanıtı yayınladım .
Gilles 'SO- kötü olmak'

@Gilles, cevabınız zekice basittir. Sevdim!

20

Bunu terminalinize yazın:

echo -e '\xe2\x82\xac' 

Terminaliniz UTF-8'i destekliyorsa euro işaretini çıkartacaktır:


Tüm fontlarda euro işareti yoktur, bu nedenle farklı bir test kodu noktası önerilebilir.
Michael Hampton

5

En lamest yol: Takip et ve çıkışı kontrol et. Terminal UTF-8'i görüntülerse, sirkumfleksli büyük O harfi olacaktır.

perl -le 'print "\x{c3}\x{94}"'

Terminalimin şimdi UTF-8'i desteklediğinden eminim (theman_on_osx tarafından önerilen testi geçti) ancak bu sadece boş bir satır çıktısı veriyor. Neler oluyor?
09:19

Belki de terminal uygulamanızda kullandığınız font UTF-8 karakterlerini desteklemiyordur.
therek

4
Bunun çok geç olduğunu biliyorum ama UTF-8 Out bayrağı bu işi daha iyi hale getiriyorperl -CO -le 'print "\x{d4}"'
Ashley,

3
Veya -CO seçeneği olmadan Perl'e doğru UTF-8 bayt verin: $ perl -le 'print "\ x {c3} \ x {94}"' Ô
Tim

2

En kesin yangın yolu 'yerel' komutunu kullanmaktır. Hangi karakterin kullanılacağını belirleyen tüm çeşitli ve çeşitli değişkenleri yazdıracaktır. Örneğin, bu benim RHEL5.3'teki çıktım, yalnızca varsayılan olarak UTF-8 kullanacak şekilde ayarlanmış.

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

1
Bu terminali test etmez, yalnızca yerel ayar (pratikte her zaman terminal emülatörü tarafından ayarlanmayan, terminalin mevcut durumunu yansıtmayabilir veya bazı kullanıcı konfigürasyonları tarafından geçersiz kılınabilir).
Gilles 'SO- kötülük' dur

1

Sadece aşağıdaki komutu kullanabilirsiniz:

locale charmap

1
Bu terminali test etmez. Sadece yerel ayarları gösterir.
Grawity

1
curl http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

veya

wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Bu açıkça wgetveya gerektirir curl.


-1
UTF=$(echo -e "\u263A")
if [[ ! "$UTF" =~ "A" ]]  ; then
 echo -n "UNICODE here!"
fi

2
Bu terminali test etmez. Yalnızca echoyerleşimin destekleyip desteklemediğini test eder \u.
Grawity
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.