web-dev-qa-db-ja.com

テキストファイルのエンコードテーブルを決定する方法

私が持っています .txtおよび.Javaファイルと、ファイルのエンコードテーブル(Unicode、UTF-8、ISO-8525、…)の決定方法がわかりません。ファイルのエンコーディングを決定したり、エンコーディングを確認したりするプログラムはありますか?

44
Ballon

Linuxを使用している場合は、file -i filename.txt

$ file -i vol34.tex 
vol34.tex: text/x-tex; charset=us-ascii

参考のために、ここに私の環境があります:

$ which file
/usr/bin/file
$ file --version
file-5.09
magic file from /etc/magic:/usr/share/misc/magic

一部のfileバージョン(OS X/macOS上のfile-5.04など)には、わずかに異なるコマンドラインスイッチがあります。

$ file -I vol34.tex 
vol34.tex: text/x-tex; charset=us-ascii
$ file --mime vol34.tex
vol34.tex: text/x-tex; charset=us-ascii

また、 here を見てください。

52
mpenkov

Notepad ++でファイルを開くと、右下隅にエンコードテーブル名が表示されます。また、メニューのエンコードでは、エンコードテーブルを変更してファイルを保存できます。

24
Ballon

テキストファイルからエンコードを確実に検出することはできません-非ASCII文字を検索し、それが構文解析している言語で意味をなすUnicodeの組み合わせであるかどうかを判断することにより、経験に基づいた推測を行うことができます。

10

これを参照してください 質問と選択された答え 。確実な方法はありません。せいぜい、あなたは物事を除外することができます。 UTFエンコードは誤検出される可能性は低いですが、特に開始言語がわからない場合は、8ビットエンコードは困難です。現在、Mac、Windows、Unixのすべての一般的な8ビットエンコーディングを処理するツールはありませんが、選択した回答は、エンコーディングの特定のサブセットに対して適切に機能するアルゴリズムアプローチを提供します。

4
tchrist

テキストファイルの場合エンコードを保存するヘッダーはありませんなど。エンコーディングを推測しようとするlinux/unixコマンドfindを試すことができます:

file -i unreadablefile.txt

または一部のシステムで

file -I unreadablefile.txt

しかし、それはしばしばあなたに_text/plain; charset=iso-8859-1ファイルは読めません(暗号化されたグリフ)。

これは、iconvをインストールした後、読み取り不可能なファイルの正しいファイルエンコーディングを見つけてutf8に変換するために行ったことです。最初にすべてのエンコーディングを試し、Wordを含む行を表示しました(grepwww。(ウェブサイトのアドレス):

for ENCODING in $(iconv -l); do echo -n "$ENCODING "; iconv -f $ENCODING -t utf-8 unreadablefile.txt 2>/dev/null| grep 'www'; done | less

この最後のコマンドラインは、テストされたファイルのエンコーディングと、翻訳/トランスコードされた行を示しています。

読みやすく一貫性のある(一度に1つの言語)結果を示す行がいくつかありました。私はそれらのいくつかを手動で試しました、例えば:

ENCODING=WINDOWS-936; iconv -f $ENCODING -t utf-8 unreadablefile.txt -o test_with_${ENCODING}.txt

私の場合、これは中国語のWindowsエンコードでしたが、今では読み込めます(中国語を知っている場合)。

1
erik