Emacsが正しく表示できないが表示されるプレーンテキストファイルがありますless
。
less
各個々のテキストファイルのエンコード方法が自動的に検出されるのか、それともすべてのテキストファイルに対して単一のデフォルトのエンコード方法であるのか疑問に思います。
less
テキストファイルをデコードするために使用されるエンコード方法を見つける方法は?
答え1
実行ファイルless
自体はエンコーディング変換を行いません。印刷可能な文字を端末に直接送信します。印刷可能と見なされるのはLESSCHARSET
環境変数によって制御されますが(詳細はマニュアルページを参照)、通常これに触れたくありません。したがって、デフォルトでは、エンコーディングはロケールから取得されます(特定の設定がない限り)。
LESSOPEN
環境変数が設定されると、入力をフィルタリングして特に変換できます。そのフィルタは、いくつかの変換が行われたかどうかを示します。lesspipe
たとえば、Wolfgang Friebelはこれを行います。
このfile
ユーティリティを使用してエンコードを取得できます。たとえば、
$ file my_file.txt
my_file.txt: UTF-8 Unicode text
おそらく、これはこれに頼るよりも良いでしょうless
。
答え2
less
今日、ほとんどのシステムではUTF-8が使用されています。からman less
:
If neither LESSCHARSET nor LESSCHARDEF is set, but any of the strings "UTF-8", "UTF8", "utf-8" or "utf8" is found in the LC_ALL, LC_CTYPE or LANG environment variables, then the default character set is utf-8. If that string is not found, but your system supports the setlocale interface, less will use setlocale to determine the character set. setlocale is controlled by setting the LANG or LC_CTYPE environment variables. Finally, if the setlocale interface is also not available, the default character set is latin1.
これが機能することを確認するには、次のless
内容を含むファイルを作成します。
アシャ
印刷に使用しますless
。すべての文字が正しく表示されたら、LANG
UTF-8を含めます。locale
これを表示するには、コマンドを使用するか、変数を印刷します$LANG
。次に、名前にUTF-8がないロケールに変更します。たとえば、次のようになります。
$ export LANG=en_US
ファイルを再印刷します。 Unicode文字は正しく印刷されません。
私もEmacsを使用していますが、場合によってはファイルが正しく表示されませんでしたが、うまくいったことを覚えていますless
。