2015-11-22 17 views
1

我有兩個UTF-8字節\xf0\x9f\x93\xb1\xf0\x9f\x9a\xac,我想它像\xf0\x9f\x93\xb1分裂,\xf0\x9f\x9a\xac是什麼做到這一點從一個分裂兩個UTF-8字節的有效途徑另一個

我做什麼最有效的方法現在是\xf0

問題

如果我解碼分裂和重新編碼,它由bigOTHER的建議我拿錯字節後面

>>> s ='\xf0\x9f\x93\xb1\xf0\x9f\x9a\xac' 
>>> u = s.decode("utf-8") 
>>> u 
u'\U0001f4f1\U0001f6ac' 
>>> u[0].encode("utf-8") 
'\xed\xa0\xbd' 
>>> u[1].encode("utf-8") 
'\xed\xb3\xb1' 
>>> u[0] 
u'\ud83d' 
>>> u[1] 
u'\udcf1' 

解決:

這是因爲我的Python是編譯UCS2代替UCS4而前者是默認的。欲瞭解更多信息請檢查該Question

+0

什麼是您的電腦本地? –

+0

@ bigOTHER呃..那是什麼意思? – Harwee

+0

lang_country.encoding –

回答

3

使用解碼編碼做到這一點:

>>> u = s.decode("utf-8") 
>>> u 
u'\U0001f4f1\U0001f6ac ' 
>>> u[0].encode("utf-8") 
'\xf0\x9f\x93\xb1' 
>>> u[1].encode("utf-8") 
'\xf0\x9f\x9a\xac' 
+0

我得到了一個不同的響應比你的>>> u [0] .encode(「utf-8」) '\ xed \ xa0 \ xbd''這是關於蟒蛇版本,因爲我使用2.7 – Harwee

+0

你得到什麼'u'?併爲u [0] .encode和u [1] .encode? –

+0

我和你有同樣的問題>>> u = s.decode(「utf-8」) >>> u u'\ U0001f4f1 \ U0001f6ac'' – Harwee

0

使用的解碼方法。它將其分割成字節本身。所以你可以在調用解碼之後直接訪問。

相關問題