テキストファイルの内容を表示するためにLessが使用するエンコード方法は何ですか?

テキストファイルの内容を表示するためにLessが使用するエンコード方法は何ですか?

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。すべての文字が正しく表示されたら、LANGUTF-8を含めます。localeこれを表示するには、コマンドを使用するか、変数を印刷します$LANG。次に、名前にUTF-8がないロケールに変更します。たとえば、次のようになります。

$ export LANG=en_US

ファイルを再印刷します。 Unicode文字は正しく印刷されません。

私もEmacsを使用していますが、場合によってはファイルが正しく表示されませんでしたが、うまくいったことを覚えていますless

関連情報