簡體   English   中英

Function 字節編碼相同的輸入並有不同的響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM