テキストファイルがPythonでUTF-8であるかどうかを認識する方法はありますか?ファイルがUTF-8を使用してエンコードされているかどうかを検出するにはどうすればよいですか?
ファイルがUTF-8であるかどうかは本当に気に入っています。私は他のエンコーディングを検出する必要はありません。
テキストファイルがPythonでUTF-8であるかどうかを認識する方法はありますか?ファイルがUTF-8を使用してエンコードされているかどうかを検出するにはどうすればよいですか?
ファイルがUTF-8であるかどうかは本当に気に入っています。私は他のエンコーディングを検出する必要はありません。
あなたはコメントで、UTF-8を検出する必要があることだけを述べました。代わりに1バイトのエンコーディングのみで構成されていることが分かっている場合は、しばしば機能するソリューションがあります。
UTF-8またはlatin-1
のようなシングルバイトのエンコーディングの場合は、最初にUTF-8で開き、次に別のエンコーディングで開きます。ファイルにASCII文字だけが含まれていると、他のエンコーディングとして意図されていてもUTF-8で開くことになります。 ASCII以外の文字が含まれている場合は、ほとんどの場合、2つの文字の間に正しい文字セットが正しく検出されます。 1.0.1
ユニバーサルエンコーディング検出器
が検出
chardet:
try: # or codecs.open on Python 2 filedata = open(filename, encoding='UTF-8').read() except: filedata = open(filename, encoding='other-single-byte-encoding').read()
あなたの最善の策は、直接またはBeautifulSoupから
UnicodeDamnit
を通じて、chardet
package from PyPIを使用することです
- ASCII、UTF-8、UTF-16(2変種)、UTF-32(4変種)
- ビッグ5、GB2312、EUC-TW、HZ-GB-2312、ISO-2022-CN(繁体および簡体字中国語)
- EUC-JP、SHIFT_JIS、ISO-2022-JP(日本語)
- EUC-KR、ISO-2022-KR(韓国)
- KOI8-R、MacCyrillic、IBM855、IBM866、ISO-8859 -5、窓-1251(キリル文字)
- ISO-8859-2、窓-1250(ハンガリー)
- ISO-8859-5、窓-1251(ブルガリア)
- の窓-1252(英語)
- ISO-8859-7、窓-1253(ギリシャ)
- ISO-8859-8、窓-1255(視覚と論理ヘブライ語)
- TIS-620(タイ)
は、Python 2.1以降
が必要しかし、いくつかのファイルがそうchardet
は万能薬ではない、複数のエンコーディングに有効となります。
信頼できますか?一般的には第
あなたがそれを解釈する方法を知っている限り、バイト列は意味がありません - これは等のテキストファイルだけでなく、整数、浮動小数点数、のために行く
しかし、の方法がありますバイトオーダーマーク(存在する場合)とファイルの最初のチャンク(どのエンコーディングが最も賢明な文字を生成するかを調べる)を調べることによって、ファイルのエンコーディングを推測します。ライブラリはchardet
ですが、これはかなり良いですが、ヒューリスティックであることに注意してください。
重複? http://stackoverflow.com/questions/436220/python-is-there-a-way-to-determine-the-encoding-of-text-fileおよびhttp://stackoverflow.com/questions/2144815/how-知っている - ファイル中のPythonのコード化 – CppLearner
私はすべてのエンコーディングではなく、UTF-8(真偽)を検出するように求めていました。 – Riki137
ファイルの内容が分からない限り、高い確信度で推測できます。たとえば、ファイルのタイプ(この場合はテキストファイルを要求しています)。ほとんどの場合、あなたは推測することができます。私はこれを数回去ってきました。その理由は次のとおりです。 – CppLearner