2015-11-26 50 views
0

假設我們有一個字符串:解碼與Unicode和UTF-8在Python 2.x的代碼串

s = '\xe5\xaf\x92\xe5\x81\x87\\u2014\\u2014\xe5\x8e\xa6\xe9\x97\xa8' 

不知何故兩個符號,'—',其是Unicode的\u2014未被正確編碼爲UTF '\xe2\x80\x94' -8。有沒有簡單的方法來解碼這個字符串?應該使用手動更換功能被解碼爲寒假——廈門

是OK:

t = u'\u2014' 
s.replace('\u2014', t.encode('utf-8') 
print s 

但是,它不是自動的。如果我們提取統一碼,

index = s.find('\u') 
t = s[index : index+6] 

then t = '\\u2014'。如何將其轉換爲UTF-8編碼?

+0

需要更多代碼。你如何製作一個UTF-8字符串,部分轉換爲Unicode文字?看起來你的其他代碼有一些根本性的錯誤,你應該修復而不是繞過它。 –

+0

某些格式可以像這樣編碼字符串,例如。 JSON是近來常見的一種。如果您試圖解析JSON字符串,請使用json解析器。 – roeland

回答

0

你在缺少多餘的斜線你replace()

它應該是:

s.replace("\\u2014", u'\u2014'.encode("utf-8")) 

檢查我的預警問題的意見。你不應該在這種情況下結束。