Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果字符串只包含特定代码页中的字符,如何在python中进行检查?_Python_Python 3.x_Encoding - Fatal编程技术网

如果字符串只包含特定代码页中的字符,如何在python中进行检查?

如果字符串只包含特定代码页中的字符,如何在python中进行检查?,python,python-3.x,encoding,Python,Python 3.x,Encoding,我知道python只使用utf8进行字符串编码,但如果我需要将数据发送到非unicode且仅支持windows代码页(如windows-1251 cyrylic等)中包含的这些字符的较旧应用程序,该怎么办。。。因此,这里我想检测utf-8字符串是否包含任何无法由给定代码页表示的字符。其中blah是字符串,ascii是编码: blah = u'\uffff' try: blah.encode('ascii') except UnicodeEncodeError: # nope -

我知道python只使用utf8进行字符串编码,但如果我需要将数据发送到非unicode且仅支持windows代码页(如windows-1251 cyrylic等)中包含的这些字符的较旧应用程序,该怎么办。。。因此,这里我想检测utf-8字符串是否包含任何无法由给定代码页表示的字符。

其中blah是字符串,ascii是编码:

blah = u'\uffff'
try:
    blah.encode('ascii')
except UnicodeEncodeError:
    # nope - can't do it...
其中blah是字符串,ascii是编码:

blah = u'\uffff'
try:
    blah.encode('ascii')
except UnicodeEncodeError:
    # nope - can't do it...

有用于编码检测的库: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,麦克西里尔语,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}

有用于编码检测的库: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,麦克西里尔语,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}

如果anypython仅使用utf8进行字符串编码,请尝试编码并捕获错误。不,没有。Python3字符串是unicode值。您可以在最常见的编解码器(包括Windows 1251“cp1251”)之间对这些代码进行编码,如果存在无法编码的代码点,只需捕获异常。如果anypython仅使用utf8进行字符串编码,请尝试编码并捕获错误。不,没有。Python3字符串是unicode值。您可以在最常见的编解码器(包括Windows 1251“cp1251”)之间对这些代码进行编码,如果存在无法编码的代码点,只需捕获异常即可。@alko:Python 3.3支持u前缀,以便于在2和3之间进行移植。不过这是多余的。这是一种混合。。。根据使用的Python3.x版本是否删除了u前缀:@alko:Python3.3支持u前缀,以便于在2和3之间进行移植。不过这是多余的。这是一种混合。。。根据所使用的Python 3.x版本是否删除了u前缀: