![](/img/trans.png)
[英]how to decode utf-16 with % as delimiter string to the original form in python3?
[英]how to decode this string present in utf 16 using python
如何使用python3解碼utf-16中存在的這個字符串
"b'\\xff\\xfeS\\x00H\\x00A\\x00D\\x00E\\x00K\\x00 \\x00D\\x00E\\x00E\\x00E\\x00P\\x00'"
試過這個但得到錯誤 TypeError: a bytes-like object is required, not 'str'
a.rstrip("\\n").decode("utf-16")
考慮您可以編輯此文本,將其更改為:
r = b'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'
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'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'
您有一個字符串,它是通過對編碼文本(字節實例)調用str
來創建的。 像這樣:
>>> s = 'abc'
>>> bs = s.encode('utf-16')
>>> bs
b'\xff\xfea\x00b\x00c\x00'
>>> str(bs)
"b'\\xff\\xfea\\x00b\\x00c\\x00'" # <- the 'b' is *inside* the outer quotes
可以通過對字符串調用ast.literal_eval來恢復字節,然后可以通過調用它們的 decode 方法將字節解碼回字符串。
>>> 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'\xff\xfeS\x00H\x00A\x00D\x00E\x00K\x00 \x00D\x00E\x00E\x00E\x00P\x00'
>>> 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 建議的那樣,您應該刪除額外的\\
字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.