Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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将Unicode编码为iso8859-15_Python_Unicode_Encoding_Encode_Iso 8859 15 - Fatal编程技术网

使用Python将Unicode编码为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' >>

我正在使用Python2.7.6,我正在尝试将一个基本的unicode字符串转换为iso8859-15

我在尝试转换带有非ASCII字符的字符串时出错。当iso8859-15编码中不存在这些字符时,这是可以的,但在这种情况下,它们确实存在:

例如:

>>> 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'