簡體   English   中英

如何將帶有轉義字符的ascii字符串轉換為其等效的unicode

[英]How to convert an ascii string with escape characters to its unicode equivalent

# coding=ascii
bad_string = '\x9a'
expected = u'š'
good_string = bad_string.decode('unicode-escape').encode('utf-8')
if good_string != expected:
    raise AssertionError()

我希望以上測試能夠通過,但出現以下錯誤:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)

我在這里想念什么?

(我不能簡單地將bad_string更改為unicode。這些是從外部來源bad_string的字符串)

'\\x9a'中沒有任何轉義字符。 轉義是字符串文字的一部分,表示的字節只是一個: [0x9a] 編碼可能是Windows-1252,因為這很常見,並且在0x9a處帶有š,但您實際上必須知道它是什么。 解碼為Windows-1252:

good_string = bad_string.decode('cp2512')

如果您實際擁有的是'\\\\x9a' (一個反斜杠,其他三個字符),則需要首先將其轉換為上述形式。 正確的方法取決於逃生者如何首先到達那里。 如果來自Python字符串文字,請首先使用string-escape

good_string = bad_string.decode('string-escape').decode('cp2512')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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