
Unicode でデータを読み取っても、Linux ターミナル (X ウィンドウなしで開く仮想ターミナル) では正しく表示されません。
私は読むここでの議論で次のようなプログラムをインストールすると、JFBTERM、そしてそれは動作するので、追加のソフトウェアなしでUnicodeを適切に処理するようにターミナルを構成する方法(コンソールフォント?)がないかどうか疑問に思っていました。
Windows ターミナル (gnome-terminal、xterm など) では次のようになります。
仮想端末では次のようになります。
JFBTERM を使用した仮想端末では次のようになります。
以下は出力のスクリーンショットですlocale
:
出力は次のとおりですshowconsolefont
:
デフォルトの仮想端末だけで同じことを達成できるかどうか知っている人はいますか?
答え1
実際これらの文字を含むフォントが必要です。たとえば、Arch Linux では を推奨していますLat2-Terminus16
。
試すには、仮想コンソールで次のコマンドを発行するだけですsetfont Lat2-Terminus16
。
残りについては、ほとんどの最新ディストリビューションで既にすぐにサポートされています。
答え2
コンソール フォントは、最大 512 個 (たぶんそれくらい) の異なるグリフのフォントを読み込むことができます。ただし、通常は 256 個のグリフのみです。
ラテン語、キリル語、または 200 個未満の複雑でない記号を使用するその他の言語を表示することは問題ありません。
ただし、複雑なスクリプトや、さまざまな記号を多数必要とするスクリプト (日本語など) の場合は、追加のレイアウトを使用して処理する以外に方法はありません。
ASCII と両方のかなセットに 512 の制限で十分な場合は、幅の問題があることに注意してください。
CJK と Kana は正方形に収まり、ラテン文字の 2 倍の幅があります。これは、コンソールがそのままでは処理できないものです。
古くて見苦しい「半角カタカナ」に頼ることもできますし(おそらくそのようなものの古いフォントを見つけることもできます)、コンソールを 40 列幅に設定してラテン文字をカナと同じ幅にすることもできます。
カナ付きのコンソール フォントは知りません。自分で描く必要があります (そのためのツールがあり、ビットマップ日本語フォントのドットをコピーするだけで済みます)。
また、iconv
を使ってカナを ASCII に変換することもできます。
答え3
に加えてLANG/LC_ALL
、stty iutf8
ターミナルに何をすべきかを指示するために、setfont
便利なフォントとマッピングをロードする必要があるかもしれません。それでも問題が解決しない場合はCONFIG_NLS_xx
、カーネル構成の設定を確認してください。自動的にロードされない場合は、必要になる場合がありますmodprobe nls_utf8
(ただし、これは Unicode ファイル名にのみ必要だと思います)。
一部の Linux ディストリビューションではunicode_start
、unicode_stop
これを自動化するスクリプトが提供されています。
問題が発生する場合は、less
環境変数LESSCHARSET
を設定する(間違っている場合は設定を解除する)必要がある場合があります。
マルクス・クーンのUnix/Linux の UTF-8 と Unicode に関する FAQ非常に貴重です。
答え4
インストールすることでユニユーティリティユニコードを見つけることができます。
$ sudo apt-get install uniutils
次に以下を使用しますuniname
:
ubuntu@shin-instance:~$ echo 岡田shin | uniname
No LINES variable in environment so unable to determine lines per page.
Using default of 24.
character byte UTF-32 encoded as glyph name
0 0 005CA1 E5 B2 A1 岡 CJK character Nelson 621
1 3 007530 E7 94 B0 田 CJK character Nelson 2994
2 6 000073 73 s LATIN SMALL LETTER S
3 7 000068 68 h LATIN SMALL LETTER H
4 8 000069 69 i LATIN SMALL LETTER I
5 9 00006E 6E n LATIN SMALL LETTER N
6 10 00000A 0A LINE FEED (LF)
ubuntu@shin-instance:~$