如何使用 Python 解码 UTF 16 中存在的这个字符串



如何使用python3解码UTF-16中存在的这个字符串

"b'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'"

尝试了这个,但得到错误类型错误:需要一个类似字节的对象,而不是"str">

a.rstrip("n").decode("utf-16")

考虑您可以编辑此文本,将其更改为:

r = b'xffxfeSx00Hx00Ax00Dx00Ex00Kx00 x00Dx00Ex00Ex00Ex00Px00'
print(r.decode('utf-16')) # SHADEK DEEEP

注意 之间的变化

字符串

"b'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'"

字符串字节数

b'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'

十六进制字节数

b'xffxfeSx00Hx00Ax00Dx00Ex00Kx00 x00Dx00Ex00Ex00Ex00Px00'

您有一个字符串,该字符串是通过对编码文本(字节实例(调用str创建的。 喜欢这个:

>>> s = 'abc'
>>> bs = s.encode('utf-16')
>>> bs
b'xffxfeax00bx00cx00'
>>> str(bs)
"b'\xff\xfea\x00b\x00c\x00'"   # <- the 'b' is *inside* the outer quotes

可以通过调用字符串上的ast.literal_eval来恢复字节,然后可以通过调用其解码方法将字节解码回 sring。

>>> import ast
>>> s = "b'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'"
>>> bs = ast.literal_eval(s)
>>> bs
b'xffxfeSx00Hx00Ax00Dx00Ex00Kx00 x00Dx00Ex00Ex00Ex00Px00'
>>> original = bs.decode('utf-16')
>>> original
'SHADEK DEEEP'

这是一种解决方法。 正确的解决方案是首先防止在字节实例上调用str

在要解码的内容的开头和结尾,您似乎有一些额外的"

这对我来说很好用:

>>> b'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'.decode('utf-16')
>>> '硜晦硜敦屓へ䠰硜〰屁へ䐰硜〰居へ䬰硜〰尠へ䐰硜〰居へ䔰硜〰居へ倰硜〰'

更新:正如Reznik建议的那样,您应该删除多余的字符。

最新更新