我无法在不丢失数据的情况下将以下Unicode转换为ASCII:
u'ABRA\xc3O JOS\xc9'
我尝试了encode
,decode
他们不会这样做。
有人有建议吗?
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.encode
,Python专用编码和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浏览器或其他内容,则情况会更加复杂,并且没有很多信息就没有简单的答案。
问题内容: 当我解析XML时: 字符解析事件处理程序包括。 怎么能变成? 这是本文中的主要问题,其余仅显示对此的进一步(令人发指)的想法 Python unicode不会被破坏,因为它会产生收益吗?u’\ xfc’已经是一个unicode字符串,因此再次将其转换为unicode不起作用!将其转换为ASCII也不起作用。 我发现唯一可行的方法是:(这不是故意的,对吧?) 用utf-8替换8859失败
本文向大家介绍js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码,包括了js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码的使用技巧和注意事项,需要的朋友参考一下 最近看不少在线工具里面都有一些编码转换的代码,很
问题内容: 我的代码只是刮取一个网页,然后将其转换为。 但是我得到了: 我认为这意味着HTML在某处包含一些错误的Unicode尝试。我能丢掉导致问题的任何代码字节而不出错吗? 问题答案: 使用类似的压缩已变得非常流行(约73%的网站都在使用它,包括和网站等大型网站)。 如果你像原始答案中那样使用压缩响应进行简单解码,则会收到类似以下错误: 编解码器无法解码位置1的字节0x8b 为了解码gzpip
问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str
我尝试过使用python 2.6将EBCDIC转换为ASCII,但在这方面存在许多问题,比如压缩字段没有得到转换,记录计数增加。 是否有任何方法转换EBCDIC文件压缩字段到ASCII格式。
问题内容: 我使用第3方工具输出Unicode格式的文件。但是,我更喜欢使用ASCII。该工具没有设置来更改文件格式。 使用Python转换整个文件格式的最佳方法是什么? 问题答案: 您可以仅使用函数就可以轻松地转换文件,但是如果没有与ASCII直接对应的Unicode字符,就会遇到问题。 该博客推荐该模块,该模块似乎可以粗略地转换字符而无需直接对应的ASCII值,例如 通常转换为 这是非常错误的