2024-09-26 22:11:08 发布
网友
我无法在不丢失数据的情况下将以下Unicode转换为ASCII:
u'ABRA\xc3O JOS\xc9'
我试过encode和decode但他们不会这么做。
encode
decode
有人有什么建议吗?
Unicode字符u'\xce0'和u'\xc9'没有任何对应的ASCII值。所以,如果不想丢失数据,就必须以某种有效的ASCII方式对数据进行编码。选项包括:
u'\xce0'
u'\xc9'
>>> 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')反转)。
decode('ascii')
有关详细信息,请参见^{}、Python Specific Encodings和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位字符串的代码和使用8位字符串的代码,并且您不太清楚,那么您的意思是UTF-8。如果使用8位字符串的代码是open函数或为页面或其他内容提供服务的web浏览器,则事情会更复杂,如果没有更多信息,就没有简单的答案。
open
我需要计算在HTTP request中接收的MD5 hash的unicode string。MD5给出了UnicodeEncodeError,python内置的编码方法不起作用,因为它用相应的hex values替换字符串中的字符,从而更改了MD5 hash。 所以我提出了下面的代码,它在从unicode转换时保持字符串的完整性。
HTTP request
MD5 hash
unicode string
UnicodeEncodeError
hex values
unicode
unicode_string = ''.join([chr(ord(x)) for x in unicode_string]).strip()
这将从字符串中删除unicode部分,并保持所有数据的完整性。
Unicode字符
u'\xce0'
和u'\xc9'
没有任何对应的ASCII值。所以,如果不想丢失数据,就必须以某种有效的ASCII方式对数据进行编码。选项包括:所有这些都是ASCII字符串,包含了原始Unicode字符串中的所有信息(因此它们都可以在不丢失数据的情况下反转),但对于最终用户来说,它们都不是那么漂亮(而且它们都不能通过
decode('ascii')
反转)。有关详细信息,请参见^{} 、Python Specific Encodings和Unicode HOWTO。
顺便说一下,当有些人说“ASCII”时,他们实际上不是指“ASCII”,而是指“ASCII的超集的任何8位字符集”或“我想到的某个特定的8位字符集”。如果这就是您的意思,那么解决方案是编码到正确的8位字符集:
最困难的是知道你指的是哪一个角色集。如果您同时编写生成8位字符串的代码和使用8位字符串的代码,并且您不太清楚,那么您的意思是UTF-8。如果使用8位字符串的代码是
open
函数或为页面或其他内容提供服务的web浏览器,则事情会更复杂,如果没有更多信息,就没有简单的答案。我需要计算在
HTTP request
中接收的MD5 hash
的unicode string
。MD5给出了UnicodeEncodeError
,python内置的编码方法不起作用,因为它用相应的hex values
替换字符串中的字符,从而更改了MD5 hash
。 所以我提出了下面的代码,它在从unicode
转换时保持字符串的完整性。这将从字符串中删除
unicode
部分,并保持所有数据的完整性。相关问题 更多 >
编程相关推荐