我試圖解碼一個十六進制字符串,但特殊字符。Python十六進制解碼顯示錯誤的結果爲特殊章程
當我運行
codecs.decode("5469eb73746f2026204b53484d5220666561742e205661737379", "hex")
我得到b'Ti\xebsto & KSHMR feat. Vassy'
,但我想Tiësto & KSHMR feat. Vassy
我檢查的十六進制代碼網上,但它是正確的。我是否需要另一個功能,或者我只想錯過一步?
我試圖解碼一個十六進制字符串,但特殊字符。Python十六進制解碼顯示錯誤的結果爲特殊章程
當我運行
codecs.decode("5469eb73746f2026204b53484d5220666561742e205661737379", "hex")
我得到b'Ti\xebsto & KSHMR feat. Vassy'
,但我想Tiësto & KSHMR feat. Vassy
我檢查的十六進制代碼網上,但它是正確的。我是否需要另一個功能,或者我只想錯過一步?
您將十六進制值解碼爲bytes
對象。如果您期望(Unicode)文本,請使用有效編碼解碼字節;你似乎有拉丁文1或Windows代碼頁1252數據在這裏:
>>> import codecs
>>> codecs.decode("5469eb73746f2026204b53484d5220666561742e205661737379", "hex")
b'Ti\xebsto & KSHMR feat. Vassy'
>>> _.decode('latin1')
'Tiësto & KSHMR feat. Vassy'
ok公平點:PI只是做了......你是對的:P –
@JoranBeasley:'str.encode()'和'bytes.decode()'在Python 3中是完全一致的。你需要使用'codecs.encode ()'/'codecs.decode()'到達[轉換編解碼器](https://docs.python.org/3/library/codecs.html#python-specific-encodings),例如''hex' '。 –
我用'打印(codecs.decode( 「5469eb73746f2026204b53484d5220666561742e205661737379」, 「六角」))'和'得到b'Ti \ xebsto&克希米爾壯舉。 Vassy'' – mimo
你有一個字節值,是的,所以先解碼爲Unicode。 –
今後請包括您獲得的* full *輸出;那裏的''b'..''前綴告訴我你正在使用Python 3,而不是Python 2,因爲我最初不得不假設(從統計角度來說,Python 2更有可能)。 –