私が持っています .txt
および.Java
ファイルと、ファイルのエンコードテーブル(Unicode、UTF-8、ISO-8525、…)の決定方法がわかりません。ファイルのエンコーディングを決定したり、エンコーディングを確認したりするプログラムはありますか?
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 を見てください。
Notepad ++でファイルを開くと、右下隅にエンコードテーブル名が表示されます。また、メニューのエンコードでは、エンコードテーブルを変更してファイルを保存できます。
テキストファイルからエンコードを確実に検出することはできません-非ASCII文字を検索し、それが構文解析している言語で意味をなすUnicodeの組み合わせであるかどうかを判断することにより、経験に基づいた推測を行うことができます。
これを参照してください 質問と選択された答え 。確実な方法はありません。せいぜい、あなたは物事を除外することができます。 UTFエンコードは誤検出される可能性は低いですが、特に開始言語がわからない場合は、8ビットエンコードは困難です。現在、Mac、Windows、Unixのすべての一般的な8ビットエンコーディングを処理するツールはありませんが、選択した回答は、エンコーディングの特定のサブセットに対して適切に機能するアルゴリズムアプローチを提供します。
テキストファイルの場合エンコードを保存するヘッダーはありませんなど。エンコーディングを推測しようとするlinux/unixコマンドfind
を試すことができます:
file -i unreadablefile.txt
または一部のシステムで
file -I unreadablefile.txt
しかし、それはしばしばあなたに_text/plain; charset=iso-8859-1
ファイルは読めません(暗号化されたグリフ)。
これは、iconv
をインストールした後、読み取り不可能なファイルの正しいファイルエンコーディングを見つけてutf8に変換するために行ったことです。最初にすべてのエンコーディングを試し、Wordを含む行を表示しました(grep
)www。(ウェブサイトのアドレス):
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エンコードでしたが、今では読み込めます(中国語を知っている場合)。