CentOS 7のコンソールで中国語をサポートする方法は?
localectlコマンドを使用しました。結果は次のとおりです。
System Locale: LANG=zh_CN.UTF-8
VC Keymap: cn
X11 Layout: cn
このセットは中国人を対象としています。ただし、lsコマンドを使用してフォルダとファイルを一覧表示すると、一部のフォルダとファイルが「■■■■」と表示されます。
答え1
あなたが見るもの
Linuxカーネルにはターミナルエミュレータプログラムが組み込まれています。開いたファイル ハンドルを持つ実行中のプロセスとして表示されません。これは、内部カーネルインターフェイスを使用してアクセスするフレームバッファと入力イベントサブシステムの上にあります。これは、一連のカーネル仮想端末デバイスなどでアプリケーションモードシステムに提供されます/dev/tty1
。以下の擬似ファイルは、/sys
アクティブなKVT番号と一連のCGAスタイルのビデオバッファデバイス/dev/vcsa1
などを示しています。これがあなたが雇うものです。
この端末エミュレータは、かなり厳しいリソース制約が適用されるカーネルモードシステムです。したがって、歴史的に大量の(カーネルアドレス空間)メモリを必要とする大きな文字セットをサポートしたことはありません。これがまさにこれらのキャラクターを「ヘレニズム化」した理由です。
この問題に対する明確な解決策は、端末エミュレータをカーネルモードから外すことです。これは長年議論されています。私は約10年前にこれに関するホワイトペーパーを書きました。
もちろん、多くのX Window System端末エミュレーションプログラムについて聞いたことがあるでしょう。もう終わった。これは、Xサーバーが表示するXウィンドウに文字の外観をレンダリングし、大きな文字セットを処理できる一般的なアプリケーションモードプログラムです。したがって、その端末エミュレータで中国語を使用することに問題はありません。
ユーザー空間仮想端末
持つ返品ただし、ターミナルエミュレータプログラムは、I / OにXサーバーを使用せずに、フレームバッファと入力イベントサブシステム用の(外部)APIの上に階層化されています。カーネルに組み込まれたターミナルエミュレータプログラムと同様に、フレームバッファと入力イベントサブシステムを直接使用しますが、カーネルに依存しないため、カーネルに拘束されない一般的なアプリケーションモードプログラムです。これにより、中国語も表示できます。実際、そのうちのいくつかユーザー空間仮想端末プログラムはこれを非常に高く評価される機能として使用します。
これには以下が含まれます。
- チョンカン- CJK I / O処理のためのユーザースペース仮想端末。特に強みは、ISO 2022非UTFエンコーディングを処理することです。特に弱点はUTFエンコーディングです。
- Facebookの用語— 以下を含む複数のフォークを作成したユーザー空間仮想端末共同用語。これには、さまざまなCJK入力方式プラグインがあります。
- bogl-bterm — たとえば、次を作成したユーザー空間仮想端末です。ニテム。
console-terminal-emulator
そしてツールconsole-fb-realizer
おやつ- LinuxおよびFreeBSD / PC-BSDカーネル仮想端末を複製するように設計されたユーザー空間仮想端末。設計上、Xライブラリに依存しません。また、設計上ISO 2022はサポートせず、UTFのみをサポートします。 (この回答を書いている時点では)CJK入力方式にはまだ非常に脆弱です。- キロメートルスコーン— システムと密接に接続されたユーザー空間仮想端末
logind
systemdのサーバーと「座席」の概念。
フォント
その場合は、中国語のフォントが必要です。これは少し複雑です。
これらのユーザ空間仮想端末プログラムのいくつかは、フォント処理、キーボードマッピング、CJK入力方法などのためにXライブラリを使用する。 X クライアントではありませんが、X ライブラリに依存しています。したがって、Xフォントを使用できます。
他の人は別の計画を持っていました。
bogl-bterm
独自の特殊フォント形式があります。 1つは、このツールを使用してBDFフォントをBOGLフォントに変換することですbdftobogl
。- nosh
console-fb-realizer
ツールの使用と新しいFreeBSD 10.1カーネル仮想端末サブシステムこれが実際に本当であるため、FreeBSDフォント操作ツールが共有されました。vtfontcvt
BDFフォントを変換するために使用されます。私はいくつかのCJKフォントを使用し、noshユーザースペース仮想端末にいくつかの中国語のマニュアルページ(Debianの)を表示することでこれを直接行いました。
追加読書
答え2
Linuxコンソール自体は中国語の表示をサポートしていませんが、一部の代替コンソール(kmsconなど)を実行してXを起動しなくても中国語を表示できます。
答え3
これを設定するには、 localectl コマンドを使用します。以下は例です
localectl status # to display locale settings localectl set-locale LANG=en_GB.utf8 # to set the Language localectl list-locales # to lists locales locale list-keymaps # list keyboard mappings locale set-keymap uk # sets the key map