[英]Function byte encode same input and have different responses
這怎么可能? 我正在使用python3。
a= b"\xfc\x48\x83\xe4\xf0\xe8"
b= "\xfc\x48\x83\xe4\xf0\xe8"
if (a == b.encode('ascii',errors='replace')):
print ("Winner")
print (a)
b'\xfcH\x83\xe4\xf0\xe8'
print (b)
üHäðè
我嘗試了不同類型的錯誤,但沒有。 如果我沒有輸入任何錯誤,它會彈出一個錯誤,它說codec can't encode character '\xfc' in position 0: ordinal not in range(128)
。 我已經閱讀了官方手冊上的手冊,但我找不到任何好的答案。
我想知道如何將(強制)B 轉換為 A。相同的打印,相同的輸出。
編輯:我找到了解決方案。 我想從十六進制字符串轉換為字節。 最后我所做的是從字符串中替換“\x”。 這會留下帶有十六進制字符的字符串。 然后我使用了字節 function bytes.fromhex()。
b = b.replace("\\x", "")
b = bytes.fromhex(b)
從您鏈接的文檔中:
編碼不必處理所有可能的 Unicode 字符,大多數編碼不需要。 例如,Python 的默認編碼是 'ascii' 編碼。 將 Unicode 字符串轉換為 ASCII 編碼的規則很簡單; 對於每個代碼點:
如果代碼點 < 128,則每個字節都與代碼點的值相同。
如果代碼點為 128 或更大,則 Unicode 字符串無法在此編碼中表示。 (在這種情況下,Python 會引發 UnicodeEncodeError 異常。)
它看起來像第一個代碼點\xfc > 128
這意味着你不能用ascii
編碼來表示它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.