您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-Unicode到ASCII转换

Python-Unicode到ASCII转换

Unicode字符,u'\xce0'并且u'\xc9'没有任何对应的ASCII值。因此,如果您不想丢失数据,则必须以某种有效的ASCII方式对数据进行编码。选项包括

>>> print s.encode('ascii', errors='backslashreplace')
ABRA\xc3O JOS\xc9
>>> print s.encode('ascii', errors='xmlcharrefreplace')
ABRAÃO JOSÉ
>>> print s.encode('unicode-escape')
ABRA\xc3O JOS\xc9
>>> print s.encode('punycode')
ABRAO JOS-jta5e

所有这些都是ASCII字符串,并且包含来自原始Unicode字符串的所有信息(因此可以将它们全部逆转而不会丢失数据),但是对于最终用户来说,它们都不是那么漂亮(而且它们都不可以)只能通过来反转decode('ascii')

有关更多信息,请参见str.encodePython专用编码Unicode HOWTO

附带说明一下,当有人说“ ASCII”时,他们实际上并不是在说“ ASCII”,而是“任何是ASCII的超集的8位字符集”或“我在其中包含的某些特定8位字符集”心神”。如果那是您的意思,解决方案是将编码为正确的8位字符集:

>>> s.encode('utf-8')
'ABRA\xc3\x83O JOS\xc3\x89'
>>> s.encode('cp1252')
'ABRA\xc3O JOS\xc9'
>>> s.encode('iso-8859-15')
'ABRA\xc3O JOS\xc9'

困难的部分是要知道您要使用的字符集。如果您要编写生成8位字符串的代码和使用它的代码,而又没有更好的了解,则表示UTF-8。例如,如果使用8位字符串的代码open您正在向其提供页面函数或Web浏览器或其他内容,则情况会更加复杂,并且没有很多信息就没有简单的答案。

python 2022/1/1 18:40:00 有270人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶