我有一个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
可能有什么问题?
答案 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