我知道Python完全使用UTF8进行字符串编码,但是如果我需要将数据发送到非unicode的旧应用程序,并仅支持Windows Page中包含的这些字符,例如Windows-1251(Cyrylic)等。 。

有帮助吗?

解决方案

有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(Cyrillic)
  • 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