![](/img/trans.png)
[英]How to convert a byte string with a unicode character to normal text in Python?
[英]How to convert byte string to character with correct escaping?
我無法弄清楚,為什么解碼失敗,如果字節字符串以a,b,c,d,e或f的十六進制形式(而不是數字)開頭,則總是有兩個反斜杠而不是一個。
>>> bstr = b'\xfb'
>>> bstr.decode('utf8', 'backslashreplace')
'\\xfb'
我想要的是“ \\ xfb”。
但,
>>> bstr = b'\x1f'
>>> bstr.decode('utf8', 'backslashreplace')
'\x1f'
可以正常工作。 你知道出什么事了嗎
b'\\xfb'
是一個包含單個字節的字節b'\\xfb'
。 該字節具有十六進制值FB或十進制251。
'\\xfb'
是包含單個Unicode代碼點的字符串。 該代碼點是U + 00FB帶斜線的拉丁文小寫字母U或û
。
b'\\xfb'
不是的UTF-8編碼'\\xfb'
。 '\\xfb'
的UTF-8編碼為b'\\xc3\\xbb'
:
>>> '\xfb'.encode('utf-8')
b'\xc3\xbb'
實際上, b'\\xfb'
根本不是任何東西的UTF-8編碼,並且嘗試將其解碼為UTF-8是錯誤的。 'backslashreplace'
指定了一種處理該錯誤的方法,其中FB字節由字符序列backslash-xfb代替。
盡管可以做將b'\\xfb'
轉換為'\\xfb'
事情,但是該轉換與UTF-8無關,而在沒有明確要求的情況下應用該轉換只會引起更多問題。 您需要弄清楚您的程序實際上需要做什么。 最有可能的是,正確的前進方向不涉及任何b'\\xfb'
到'\\xfb'
轉換。 我們無法告訴您您需要做什么,因為我們缺少太多背景信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.