文字列に文字が特定のコードページのみをフォームする場合にPythonをチェックする方法は?

StackOverflow https://stackoverflow.com/questions/20353716

  •  25-08-2022
  •  | 
  •  

質問

Pythonは文字列エンコーディングにUTF8のみを使用していることを知っていますが、非ユニコードである古いアプリケーションにデータを送信する必要があり、Windows-1251(Cyrylic)などのWindows Code-Pageに含まれるこれらの文字のみをサポートする必要がある場合はどうなりますか。したがって、ここでは、UTF-8文字列に、指定されたコードページで表されない文字が含まれているかどうかを検出したいと思います。

役に立ちましたか?

解決

エンコード検出のためのLIBがあります: https://pypi.python.org/pypi/chardet (Pythonでの自動検出をエンコードする文字。ブラウザと同じくらいスマート。オープンソース)

検出...

  • ASCII、UTF-8、UTF-16(2バリアント)、UTF-32(4バリアント)
  • BIG5、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、Windows-1251(キリル酸)
  • ISO-8859-2、Windows-1250(ハンガリー)
  • ISO-8859-5、Windows-1251(ブルガリア語)
  • Windows-1252(英語)
  • ISO-8859-7、Windows-1253(ギリシャ語)
  • ISO-8859-8、Windows-1255(視覚的および論理的なヘブライ語)
  • tis-620(タイ)

ドキュメントの例:

>>> import urllib
>>> rawdata = urllib.urlopen('http://yahoo.co.jp/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'encoding': 'EUC-JP', 'confidence': 0.99}

他のヒント

どこ blah あなたの文字列です ascii あなたのエンコードはありますか:

blah = u'\uffff'
try:
    blah.encode('ascii')
except UnicodeEncodeError:
    # nope - can't do it...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top