web-dev-qa-db-ja.com

端末がユニコード文字を適切に出力しないのはなぜですか?

たとえば、私の端末はこれを行います:

$ echo -e "\xE2\x98\xA0"
���

私はこれをすることを期待しています:

$ echo -e "\xE2\x98\xA0"
☠

どうして?端末に適切なUnicodeシンボルを出力させるにはどうすればよいですか?

Arch LinuxでGnome 3のターミナルを使用しています。

localeの出力は以下を示します。

LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
44
trusktr

私はそれを考え出した。 LANGUAGE="en_US.UTF-8"/etc/rc.confを設定し、LANG="en_US.UTF-8"/etc/locale.confを設定してから、ログアウトして再度ログインし、機能することを確認する必要がありました。私の端末は現在ユニコードを正しく表示しています。

12
trusktr

_/etc/*_ファイルを変更できない場合、手動で_gnome-terminal_メニューTerminal | _Set Character Encoding_をUnicode(Utf-8)に設定できます

11
Nimlar

次のコマンドでロケールを更新しました。

Sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en.UTF-8

次に再起動しました:

Sudo reboot
6
Ben