← XeFM English | 日本語 · crftwr/xefm on GitHub · craftware

文字エンコーディング

English | 日本語

テキストビューアーはファイルの文字エンコーディングを自動で判定します。そのため、Shift-JIS、EUC-JP、ISO-2022-JP といった従来の日本語テキストも、BOM の有無にかかわらず UTF-8 と並んで正しく表示されます。判定を誤ったファイルは、ビューアーの中からエンコーディングを明示的に選べます。

自動判定

テキストビューアー(view_file)でファイルを開くだけで、次のエンコーディングが正しく表示されます。

ヘッダーの右側には使用中のエンコーディングが表示される(例:Shift-JIS 12/340)ので、判定が何を選んだかが常にわかります。判定は内容に基づいて行われ、拡張子の一覧やロケールからの推測は使いません。また、必ず何かが表示されます。どれにも当てはまらないファイルは、開くのを拒否する代わりに Latin-1 として表示されます。

同じ判定は差分ビューアーでも使われるので、2 つの Shift-JIS ファイルを比較すると、両側に本来のテキストが表示されます。内容検索(find_in_files)も BOM を尊重します。UTF-16/32 のファイルはバイナリとして飛ばされずにテキストとして検索され、UTF-8 の BOM が 1 行目での ^ で始まるマッチを妨げることもありません。

エンコーディングを手動で選ぶ

ビューアーで change_encoding を実行すると、エンコーディングの選択ダイアログが開きます。

↑/↓ で選びます。入力を始めることもできます(s で Shift-JIS へ、eu で EUC-JP へ移動し、一致したものがダイアログの下部に表示されます)。Enter で適用し(ファイルはスクロール位置を保ったままその場でデコードし直されます)、Esc でキャンセルします。選択は、現在有効になっているものの上で開きます。

ビューアーの中では、edit_file もファイル一覧と同じキーで使えます(そのキーはキーマッププリセットによって異なります。キーマッププリセットを参照してください)。ファイル一覧から使うときとまったく同じように、表示中のファイルを設定したエディターで開きます。ターミナルのエディターから戻ると、ビューアーはファイルを読み込み直します。

手動で選んだ場合も、常に 何か が表示されます。選んだエンコーディングで表せないバイトは、拒否されずに置換文字(�)として表示されます。Auto を選ぶと自動判定に戻ります。

手動指定が役に立つのは次の 2 つの場合です。

この選択はファイルごと・表示ごとです。ビューアーを閉じると忘れられ、ファイルを開き直すと改めて判定されます。

選択ダイアログの設定

選択ダイアログのエンコーディング一覧は ~/.xefm/config.py にあります。

TEXT_ENCODINGS = ['utf-8', 'cp932', 'euc-jp', 'iso-2022-jp', 'latin-1']

Python のコーデック名であれば何でも使えます。'koi8-r'、'gb2312'、'utf-16-le' など、扱うものを何でも追加してください。この一覧は手動の選択ダイアログにだけ使われます。自動判定は組み込みで、この一覧の影響を受けません。

キーは、ほかのアクションと同じく KEY_BINDINGS['change_encoding'] で割り当て直せます(キーバインドを参照)。

関連項目