Unicodeでデータを読み取ると、Linuxターミナル(Xウィンドウなしで開く仮想ターミナル)では正しく表示されません。
私は ここのディスカッションで[〜#〜] jfbterm [〜#〜] などのインストールプログラムを読み、それが機能するので、あるかどうか疑問に思っていました追加のソフトウェアなしでユニコードを適切に処理するようにターミナルを構成する方法(コンソールフォント?).
Windows端末(gnome-terminal、xtermなど)では、次のようになります。
仮想端末では、次のようになります。
JFBTERMを使用した仮想端末では、次のようになります。
これはlocale
の出力のスクリーンショットです。
showconsolefont
の出力は次のとおりです。
デフォルトの仮想端末だけで同じことができるかどうか誰かが知っていますか?
コンソールフォントは、フォントを最大512(私はそう思う)までの異なるグリフにロードできます。ただし、通常は256文字のみです。
ラテン語、キリル文字、または200未満の非複雑な記号を使用する他の言語を表示することは問題ありません。
ただし、複雑なスクリプト、または多くの異なる記号(日本語など)を必要とするスクリプトの場合、それを処理するために追加のレイアウトを使用する以外に可能性はありません。
512の制限がASCIIおよび両方のかなセット)に十分である場合、幅の問題があることに注意してください。
CJKとカナは正方形に適合し、ラテン文字の2倍の幅です。これは、コンソールがそのままで処理できるものではありません。
あなたは古くて醜い「半角カタカナ」に頼る(そしておそらくそのようなものの古いフォントを見つけることさえできる)か、またはコンソールを40カラム幅に設定し、ラテン文字をカナと同じ幅にすることができます。
かなでこのようなコンソールフォントを知りません。あなたはあなた自身を描くべきです(そうするためのツールがあり、ビットマップ日本語フォントのドットをコピーすることができます)。
また、iconv
を使用して、かなをASCIIに変換できます。
これらの文字を実際に含むフォントが必要です。たとえばArch LinuxではLat2-Terminus16
を推奨しています。
試すには、仮想コンソールで次のコマンドを発行してください:setfont Lat2-Terminus16
。
残りについては、ほとんどの最新のディストリビューションはすでに箱から出してそれをサポートしています。
LANG/LC_ALL
に加えて、stty iutf8
は端末に何をすべきかを指示するために必要ですが、有用なフォントとマッピングをロードするためにsetfont
が必要になる場合があります。それでも問題が解決しない場合は、カーネル構成でCONFIG_NLS_xx
設定を確認してください。自動的に読み込まれない場合は、modprobe nls_utf8
が必要になることがあります(ただし、これはUnicodeファイル名にのみ必要だと思います)。
一部のLinuxディストリビューションでは、これを自動化するためのunicode_start
およびunicode_stop
スクリプトを提供しています。
less
が問題を引き起こす場合は、環境変数LESSCHARSET
を設定する必要があります(または、間違っている場合は設定解除します)。
Markus Kuhnの TF-8およびUnicode FAQ Unix/Linuxの場合 は非常に貴重です。