2011-08-10 72 views
4

轉換U「串」在Python「串」我有以下幾點:不改變編碼

u'\x96' 

我想將其轉換爲以下幾點:

'\x96' 

有什麼辦法做這個? str()不起作用,當使用.encode(...)它改變編碼。我的主要目標是能夠得到以下的結果,所以任何快捷方式到那裏也會被接受:

>>> '\x96'.decode("cp1252") 
u'\u2013' 

換句話說,我有u'\x96',我想u'\u2013'。任何幫助,將不勝感激。

我正在使用Python 2.7。

+0

也許你可以解碼爲ascii而不是特定的ANSI代碼頁。 –

+0

@David:但是你不能在'\ x7f'上面使用任何東西。 –

+0

@Ignacio「\ x7f」之上不會有任何東西! –

回答

6
u'\x96'.encode('raw_unicode_escape').decode("cp1252") 
+0

完美!非常感謝。 – martin

+0

這是一個迂迴的方式。它會將任何非ISO-8859-1字符轉換爲'\ u'轉義的副作用。例如,'u'\ u00FF \ u0100''變成'u'\ xff \\ u0100''。也許你想要那個;我認爲我更喜歡UnicodeEncodeError。 – bobince

3

Latin-1的是Unicode的的前256個字符直接映射到它們的字節值的編碼。

>>> u'\x96'.encode('latin-1').decode("cp1252") 
u'\u2013' 
+0

這將是通常的習慣用法。 'latin-1'是ISO-8859-1的別名。 – bobince