私はzshにDebian Jessieをうまく機能させるのにひどい時間を費やしましたが、私の問題はすべてシステムのロケールに起因しているという結論に達しました。 locale
を実行しています。
LANG=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
ただし、/etc/default/locale
にはLANG=en_US.UTF-8
と同様に/etc/environment
が含まれており、私の/etc/locale.gen
ファイルにはen_US.UTF-8 UTF-8
のみコメント化されていません。
locale
は、システム上の他のすべてのオプションと(微妙に)異なるものを報告するのですか。locale
を実行するときに、LCオプションごとに "en_US.UTF-8"を与えるように構成(修正)するにはどうすればよいですか?「適切な」名前は_UTF-8
_です。ただし、Linux glibcは、エンコーディング名を小文字に変換してほとんどの特殊文字を削除することにより、エンコーディング名を内部的に正規化するため、両方のバリアントが機能します(BSDシステムにエスケープしない限り)。
ほとんどの場合、$ LANGの_.utf8
_サフィックスはGNOMEから来ています。 afaik、これは3.18で修正されました。
ただし、上記のように、_utf8
_と_UTF-8
_はLinux glibcでも同じように機能します。問題は他の場所から発生します。あなたが問題を書いていないのでis、ここに一般的なチェックリストがあります:
_locale -a
_(利用可能なロケール)はどちらのバリアントも表示しますかまったく?つまり生成(_locale-gen
_を使用)locale.genを編集した後のロケールはありますか?
ターミナルエミュレータ環境のロケール設定は同じですか? cat /proc/$(pidof xterm)/environ | tr \\0 \\n
を使用して、別のプロセスの環境を確認します。
(多くの場合、人々は_~/.bashrc
_または同様のファイルからロケール環境変数を設定しようとしますが、環境変数は「上方」に伝搬しないため、最終結果になります。)
_printf '\xe2\x99\xa5'
_は何を出力しますか? oneボックスまたは疑問符が表示されている場合、フォントに必要な文字がないことを意味します。 threeガベージ文字が表示される場合は、端末に適切な$ LANGがない(またはUTF-8をサポートしていない)ことを意味します。