使用Python将Unicode编码为iso8859-15
我正在使用Python2.7.6,我正在尝试将一个基本的unicode字符串转换为iso8859-15 我在尝试转换带有非ASCII字符的字符串时出错。当iso8859-15编码中不存在这些字符时,这是可以的,但在这种情况下,它们确实存在: 例如:使用Python将Unicode编码为iso8859-15,python,unicode,encoding,encode,iso-8859-15,Python,Unicode,Encoding,Encode,Iso 8859 15,我正在使用Python2.7.6,我正在尝试将一个基本的unicode字符串转换为iso8859-15 我在尝试转换带有非ASCII字符的字符串时出错。当iso8859-15编码中不存在这些字符时,这是可以的,但在这种情况下,它们确实存在: 例如: >>> import codecs >>> a = "test" >>> a 'test' >>> a.encode ('iso8859-15') 'test' >>
>>> import codecs
>>> a = "test"
>>> a
'test'
>>> a.encode ('iso8859-15')
'test'
>>> a = "ü"
>>> a
'\xfc'
>>> a.encode ('iso8859-15')
错误代码:
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
a.encode ('iso8859-15')
File "C:\Python27\lib\encodings\iso8859_15.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 0: ordinal not in range(128)
如何将带有非ascii字符(如“u”)的unicode字符串转换为“iso8859-15”?
如果函数encode在这种情况下不起作用:如何将lib\encodings\iso8859_15.py中的encoding_表列表直接导入代码 您正在尝试对字节字符串进行编码。bytestring已经编码,因此Python尝试先为您解码,然后再对其进行编码,它将使用ASCII进行编码 例外情况反映了这一点;您得到的是一个
UnicodeCodeError
,而不是UnicodeCodeError
要创建unicode值,请改用u'…'
unicode文本:
>>> a = u'ü'
>>> a
u'\xfc'
>>> a.encode('iso8859-15')
'\xfc'
或者使用有效编码将bytestring数据解码为Unicode:
>>> a = 'ü'
>>> a.decode('utf8') # my terminal is configured to use UTF-8
u'\xfc'
>>> a.decode('utf8').encode('iso8859-15')
'\xfc'
>>> a = 'ü'
>>> a.decode('utf8') # my terminal is configured to use UTF-8
u'\xfc'
>>> a.decode('utf8').encode('iso8859-15')
'\xfc'