utf8转换为utf16

2024-10-06 18:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把汉字转换成unicode格式,比如'\uxxx' 但当我使用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))

有人能给我建议在Python3.x中进行这种转换吗?


Tags: convertdataif格式unicodetempreplaceutf
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?'

尝试先解码,比如:s.decode('utf-8').encode('utf-16be')

相关问题 更多 >