端末がUTF-8をサポートしているかどうかを確認する方法


21

CentOs 5でperl用のCPANモジュールを設定していますが、質問の1つは「端末はUTF-8をサポートしていますか?」です。(言い換え)。どうすればわかりますか?

回答:


15

実際、テストする確実な方法は、テキストファイルをダウンロードし、ターミナルでそれをcatして、すべてが正常に見えるかどうかを確認することです。

または、可能であれば、Unicodeオプションを有効にしてターミナルを再コンパイルします(オプションがある場合)。

$ TERMと$ LANGはどのように見えますか?


$ TERMは "xterm" $ LANGは "en_US.UTF-8"(aha!)ターミナルではテキストファイルがうまく表示されますが、奇妙なことにFirefoxでは表示されません。
Whatsit 2009年

いや、私は実際には同じことに遭遇しました: - / ...私は提案をtherekのしようとしたとき、私は疑問符だ
theman_on_osx

$ LANGは、stdout / stderrに書き込むときにシステムが使用するものを通知するだけです。端末の機能については何も言いません。ただし、システムが奇妙な文字を印刷するすべてが正常に見える場合、端末はおそらくUTF-8をサポートしています。
エプシロン2009年

2
これは、一部のテキストを表示し、その幅をチェックすることで(前後のカーソル位置を読み取ることにより)自動化することもできます。私は投稿概念実証他Proposの何かを。
ジル「SO-悪であるのをやめる」

@Gilles、あなたの答えは見事にシンプルです。大好きです!

20

これを端末に入力します。

echo -e '\xe2\x82\xac' 

端末がUTF-8をサポートしている場合、ユーロ記号が出力されます。


すべてのフォントにユーロ記号が付いているわけではないため、異なるテストコードポイントを使用することをお勧めします。
マイケルハンプトン

5

最も遅い方法:以下を実行し、出力を確認します。端末がUTF-8を表示する場合、サーカムフレックス付きの大文字のOになります。

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

私の端末は現在UTF-8をサポートしていると確信しています(theman_on_osxによって提案されたテストに合格しました)が、これは空行を出力するだけです。どうしたの?
と、whatsit

端末アプリで使用しているフォントがUTF-8文字をサポートしていない可能性があります。
午前

4
私はこれが非常に遅いことを知っていますが、UTF-8 Outフラグはそれをより良くしますperl -CO -le 'print "\x{d4}"'
アシュリー

3
または-COオプションなし、Perlの与える正しいUTF-8バイト:$ perlの-le '印刷"\ X {C3} \ {X} 94"' O
ティム

2

最も確実な方法は、 'locale'コマンドを使用することです。使用する文字セットを指定するさまざまな変数およびすべての変数を出力します。たとえば、これはデフォルトでUTF-8のみを使用するように設定されたRHEL5.3での私の出力です。

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
これはターミナルをテストせず、ロケール設定のみをテストします(実際にはターミナルエミュレータによって常に設定されるとは限らず、ターミナルの現在の状態を反映しない場合があります。または、一部のユーザー設定によってオーバーライドされる場合があります)。
ジル 'SO-悪であるのをやめる'

1

次のコマンドを使用できます。

locale charmap

1
これは端末をテストしません。ロケール設定のみが表示されます。
-grawity

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

または

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

これには明らかにwgetまたはが必要curlです。


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

2
これは端末をテストしません。echo組み込みがサポートするかどうかのみをテストします\u
-grawity
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.