マニュアルページやログなど、多くのシステムコンテキストで印刷できない文字が表示されます。強調表示された疑問符で表示されます。たとえば、マニュアルページには次の値があります。
E2 9F A8 ...email address... E2 9F A9
そして作家の名前
F r C3 A9 d C3 A9 r i c k
ここで、数値は16進値です。 Unicodeではこの値が見つからず、その値が何であるかわかりません。これをエスケープシーケンスとして処理すると、次のような結果が得られます。
M-b M-^ M-^_ M-( ... email address ... M-b M-^_ M-)
出力を正しく翻訳するにはどうすればよいですか?私のロケールは次のように設定されています。
LANG=en_US.UTF-8
$ TERMは "linux"で、マシン自体で仮想コンソールを使用しています。
答え1
デフォルトでは、コメントの作成者は明示的に言及していませんが、マニュアルページはUTF-8文字を使用してフォーマットされています。状況によっては修正されることがあります
マンページでアメリカ英語を使いたいとしましょう。
LC_CTYPE=C人何を確認したいのか
この動作は抑制する必要があります。履歴書を見ると、このオプションが好きです。 LC_CTYPEが設定されていない場合は、LC_CTYPEの代わりにLC_ALLを指定できます。すべての環境変数と同様に、これをシェルで設定し、すべてのコマンドに適用できます。
これを無効にするもう1つのロケールオプションはen_USです。アメリカ英語が必要ない場合は他のロケールがたくさんあり、その多くは.UTF-8を持ち、UTF-8がない場合はUTF-8を使用します。
- コンソールフォントに関連する文字に対するUnicodeマッピングがある場合は、マニュアル
-r
ページに入力するだけでページャに正しい文字が表示されます。ただし、この設定にも危険がないわけではありません。表示している文書のすべての端末制御シーケンスを適用できます。マニュアルページを表示するときにこれを安全に実行する必要がありますが、信頼できないソースからファイルを表示したり、任意のデータを含むファイルを表示したりすると、コンソールがロックされたり、悪い状況が発生する可能性があります。 (コンソールに表示されるファイルがキーボードバッファに文字を入れることを可能にするいくつかのターミナルエスケープシーケンスがあり、キーボードバッファを読んだ直後に入力したように有効にします。Linux仮想制御ステーションこれらのいずれもサポートまたはサポートしません)。
LinuxディストリビューションがデフォルトでUTF-8をオフにする代わりにオンに切り替えたので、これは人々がもっと気づいていると思います。一方、Linuxコンソールはまだ512文字のフォントのみをサポートし、16色のうち半分だけ無効になっています。他のUnicode歯の問題では、X Windowsフォントは64k文字のみをサポートし、Unicodeは64kよりもはるかに多くの文字をサポートします。