2017-07-13 62 views
0

我有一個字符串x如下如何蟒蛇Unicode字符串轉換爲字節

x = "\xe9\x94\x99\xe8\xaf\xaf" 

該字符串應該是Unicode字符串,但無法顯示(打印)正確。

和字符串y是Unicode字符串開始b /字節,y可以得到正確的y.decode('utf-8')

y = b"\xe9\x94\x99\xe8\xaf\xaf" 

我的問題顯示如何將x轉換爲y?

+1

這些應該如何顯示?我的Windows將''é[x] [x]è「'換成'x',將''[x] [x]」'換成'y'。 –

回答

2

假設我們在談論Python3,Unicode字符串x是6個碼點長。恰巧,這些代碼點中的每一個都在範圍0x000xff(ASCII子集)中。我們可以用raw_unicode_escape編解碼器得到確切的字節串,像這樣:

>>> x = "\xe9\x94\x99\xe8\xaf\xaf" 
>>> y = x.encode('raw_unicode_escape') 
>>> y 
b'\xe9\x94\x99\xe8\xaf\xaf' 
>>> y.decode('utf8') 
'錯誤' 

注意,如果字符串x包含Unicode只ASCII子範圍,這隻會工作;否則你只會得到逃逸的Unicode代碼點(如編解碼器的名字所示):

>>> "šž".encode('raw_unicode_escape') 
b'\\u0161\\u017e'