Python 如何将编码错误的字节字符串转换为正常字符串?
我有一个格式如下的字符串,但似乎我真的无法将其转换为普通字符串,因为我真的不知道Python 如何将编码错误的字节字符串转换为正常字符串?,python,Python,我有一个格式如下的字符串,但似乎我真的无法将其转换为普通字符串,因为我真的不知道string\u original的格式 string_original = b'sab\\u00e3o em p\\u00f3' 答案是: string = 'sabão em pó' >>> string_original.decode('unicode-escape') 'sabão em pó' 编码为字节的字符串可以具有 两位十六进制转义字符\x**或 四位Unicode转义字符\
string\u original
的格式
string_original = b'sab\\u00e3o em p\\u00f3'
答案是:
string = 'sabão em pó'
>>> string_original.decode('unicode-escape')
'sabão em pó'
编码为
字节的字符串可以具有
- 两位十六进制转义字符
\x**
或
- 四位Unicode转义字符
\u****
或
- 八位Unicode转义字符
\U*********
十六进制转义字符可以使用
byte_object.decode('encoding') # encoding = utf-* / ascii / iso-8859-*
byte_object.decode('unicode-escape')
Unicode转义字符可以使用
byte_object.decode('encoding') # encoding = utf-* / ascii / iso-8859-*
byte_object.decode('unicode-escape')
您的问题的代码实现是:
string = 'sabão em pó'
>>> string_original.decode('unicode-escape')
'sabão em pó'
由于您不知道编码,因此可以执行逐字节检查,查看数据包含哪些字节值,并可能将\u
和\u
转换为相应的\x
>>> for byte in "ã".encode('unicode-escape'): # ã --> U+00E3
print(hex(byte))
0x5c --> \
0x78 --> x
0x65 --> e
0x33 --> 3
>>> for byte in "Æ".encode('unicode-escape'): # Æ --> U+00C6
print(hex(byte))
0x5c --> \
0x78 --> x
0x63 --> c
0x36 --> 6 (Hope you see the pattern by now)
查看有关使用Python的Unicode字符的更多信息
这是一个从U+0000
到U+00FF
编码为字节的字符串可以具有
- 两位十六进制转义字符
\x**
或
- 四位Unicode转义字符
\u****
或
- 八位Unicode转义字符
\U*********
十六进制转义字符可以使用
byte_object.decode('encoding') # encoding = utf-* / ascii / iso-8859-*
byte_object.decode('unicode-escape')
Unicode转义字符可以使用
byte_object.decode('encoding') # encoding = utf-* / ascii / iso-8859-*
byte_object.decode('unicode-escape')
您的问题的代码实现是:
string = 'sabão em pó'
>>> string_original.decode('unicode-escape')
'sabão em pó'
由于您不知道编码,因此可以执行逐字节检查,查看数据包含哪些字节值,并可能将\u
和\u
转换为相应的\x
>>> for byte in "ã".encode('unicode-escape'): # ã --> U+00E3
print(hex(byte))
0x5c --> \
0x78 --> x
0x65 --> e
0x33 --> 3
>>> for byte in "Æ".encode('unicode-escape'): # Æ --> U+00C6
print(hex(byte))
0x5c --> \
0x78 --> x
0x63 --> c
0x36 --> 6 (Hope you see the pattern by now)
查看有关使用Python的Unicode字符的更多信息
这是一个从U+0000
到U+00FF
的很棒的例子。我学到了一些新的东西,我不知道'unicode-escape'
编码。@SorousHBakhtiary还有原始unicode-escape
,有时也很有用。有时原始unicode转义
与unicode转义
一起可能有助于解码更复杂的字符串-使用更多\raw-unicode-escape
很有趣,通过这个线程了解更多信息:D'sab\\u00e3o em p\\u00f3'.encode('raw-unicode-escape')。decode('unicode-escape')
非常感谢。理解和学习。很好。我学到了一些新的东西,我不知道'unicode-escape'
编码。@SorousHBakhtiary还有原始unicode-escape
,有时也很有用。有时原始unicode转义
与unicode转义
一起可能有助于解码更复杂的字符串-使用更多\raw-unicode-escape
很有趣,通过这个线程了解更多信息:D'sab\\u00e3o em p\\u00f3'.encode('raw-unicode-escape')。decode('unicode-escape')
非常感谢。理解和学习。chardet
模块用于猜测未知文本的编码,尽管我不确定您是否有足够的文本使其可靠。chardet
模块用于猜测未知文本的编码,尽管我不确定您是否有足够的文本使其可靠。