utf-8 转换为 utf-16

1 python unicode utf-16 python-3.x

我想将汉字转换为unicode格式,例如\'\\uXXXX\'\n但是当我使用str.encode(\'utf-16be\')时,它会显示:

\n\n
b\'\\xOO\\xOO\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,我编写了一些代码来执行我的请求,如下所示:

\n\n
data="index=\xe7\xb4\xa2\xe5\xbc\x95?"\nprint(data.encode(\'UTF-16LE\'))\n\ndef convert(s):\n    returnCode=[]\n    temp=\'\'\n    for n in s.encode(\'utf-16be\'):\n        if temp==\'\':\n            if str.replace(hex(n),\'0x\',\'\')==\'0\':\n                temp=\'00\'\n                continue\n            temp+=str.replace(hex(n),\'0x\',\'\')\n        else:\n            returnCode.append(temp+str.replace(hex(n),\'0x\',\'\'))\n            temp=\'\'\n\n    return returnCode\n\nprint(convert(data))\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人可以给我建议在 python 3.x 中进行此转换吗?

\n

ern*_*rny 5

我不确定我是否理解你的意思。

\n\n

Unicode 就像一种类型。在Python 3中,所有字符串都是unicode,所以当你写data = "index=\xe7\xb4\xa2\xe5\xbc\x95?"数据已经是unicode了。如果您想获得仅用于显示的替代表示,您可以使用:

\n\n
def display_unicode(data):\n    return "".join(["\\\\u%s" % hex(ord(l))[2:].zfill(4) for l in data])\n\n>>> data = "index=\xe7\xb4\xa2\xe5\xbc\x95?"\n>>> print(display_unicode(data))\n\\u0069\\u006e\\u0064\\u0065\\u0078\\u003d\\u7d22\\u5f15\\u003f\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,该字符串现在具有真正的反斜杠和数字表示形式,而不是 unicode 字符。

\n\n

但可能还有其他选择

\n\n
>>> data.encode(\'ascii\', \'backslashreplace\')\nb\'index=\\\\u7d22\\\\u5f15?\'\n>>> data.encode(\'unicode_escape\')\nb\'index=\\\\u7d22\\\\u5f15?\'\n
Run Code Online (Sandbox Code Playgroud)\n