我想将中文字符转换为unicode格式,例如'\ uXXXX' 但是当我使用str.encode('utf-16be')时,它会显示:
b'\xOO\xOO'
所以,我写了一些代码来执行我的请求,如下所示:
data="index=索引?"
print(data.encode('UTF-16LE'))
def convert(s):
returnCode=[]
temp=''
for n in s.encode('utf-16be'):
if temp=='':
if str.replace(hex(n),'0x','')=='0':
temp='00'
continue
temp+=str.replace(hex(n),'0x','')
else:
returnCode.append(temp+str.replace(hex(n),'0x',''))
temp=''
return returnCode
print(convert(data))
有人可以给我建议在python 3.x中进行这种转换吗?
答案 0 :(得分:2)
我不确定我是否理解你。
Unicode就像一个类型。在python 3中,所有字符串都是unicode,因此当您编写data = "index=索引?"
时,数据已经是unicode。如果您想获得仅用于显示的替代表示,您可以使用:
def display_unicode(data):
return "".join(["\\u%s" % hex(ord(l))[2:].zfill(4) for l in data])
>>> data = "index=索引?"
>>> print(display_unicode(data))
\u0069\u006e\u0064\u0065\u0078\u003d\u7d22\u5f15\u003f
请注意,该字符串现在具有真正的反斜杠和数字表示,而不是unicode字符。
但可能还有其他选择
>>> data.encode('ascii', 'backslashreplace')
b'index=\\u7d22\\u5f15?'
>>> data.encode('unicode_escape')
b'index=\\u7d22\\u5f15?'
答案 1 :(得分:0)
首先尝试解码,例如:s.decode('utf-8').encode('utf-16be')
?