Python中的UTF-8编码

时间:2016-02-03 01:35:26

标签: python unicode encoding utf-8

我有一个UTF-8字符,中间用`_'编码,例如'_ea_b4_80'。 我正在尝试使用replace方法将其转换为UTF-8字符,但我无法获得正确的编码。

这是一个代码示例:

import sys
reload(sys)  
sys.setdefaultencoding('utf8')

r = '_ea_b4_80'
r2 = '\xea\xb4\x80'

r = r.replace('_', '\\x')
print r
print r.encode("utf-8")
print r2

在这个例子中,r与r2不同;这是一个输出。

\xea\xb4\x80
\xea\xb4\x80
관  <-- correctly shown 

可能有什么问题?

1 个答案:

答案 0 :(得分:4)

ws://aorbcname:aorbport仅在字符串文字中有意义,您无法使用\x添加它。

要获得所需的结果,请转换为字节,然后解码:

replace

可以根据需要为您提供import binascii r = '_ea_b4_80' rhexonly = r.replace('_', '') # Returns 'eab480' rbytes = binascii.unhexlify(rhexonly) # Returns b'\xea\xb4\x80' rtext = rbytes.decode('utf-8') # Returns '관' (unicode if Py2, str Py3) print(rtext)

如果你正在使用现代Py3,你可以避免导入(假设实际上是r; str,与bytes.fromhex不同,只需要使用binascii.hexlify类方法取代str {/ 1}}输入,而不是bytes输入:

bytes.fromhex