gpt4 book ai didi

python - 使用 Python 将 Unicode 编码为 iso8859-15

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:52 24 4
gpt4 key购买 nike

我正在使用 Python 2.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)

在这种情况下,“ü” 是一个有效的 iso8859-15 字符,具有十六进制值 fc 或二进制值 11111100。在“C:\Python27\lib\encodings\iso8859_15.py”中查看第 300 行的值 FC:

    47:  decoding_table = (
48: u'\x00' # 0x00 -> NULL
.....
300: u'\xfc' # 0xFC -> LATIN SMALL LETTER U WITH DIAERESIS

如何将带有非 ASCII 字符(如“ü”)的 Unicode 字符串转换为“iso8859-15”?如果函数 encode 在这种情况下不起作用:如何将 lib\encodings\iso8859_15.py 中的 encoding_table 列表直接导入到我的代码中?

最佳答案

您正在尝试编码一个字节串。 bytestring 已经编码,因此 Python 会尝试先为您解码,然后再对其进行编码,它会使用 ASCII 来完成此操作。

异常反射(reflect)了这一点;你得到一个 UnicodeDecodeError,而不是 UnicodeEncodeError

要创建 unicode 值,请使用 u'...' unicode 文字代替:

>>> a = u'ü'
>>> a
u'\xfc'
>>> a.encode('iso8859-15')
'\xfc'

或使用有效编码将字节串数据解码为 Unicode:

>>> a = 'ü'
>>> a.decode('utf8') # my terminal is configured to use UTF-8
u'\xfc'
>>> a.decode('utf8').encode('iso8859-15')
'\xfc'

关于python - 使用 Python 将 Unicode 编码为 iso8859-15,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com