2012-02-02 62 views
3

我有一個像轉換一個Unicode對象拉丁字符串實體

x = u"a & 日本語: enči hallöle" 

一個Unicode對象,並希望將其轉換成Latin-1的字符串HTML的實體,如

"a & 日本語: enči hallöle" 

的背後的原因是,我希望我的用戶能夠輸入unicode數據,但我需要保存數據的傳統數據庫只接受latin-1字符串。 (「ö」不應轉換,但其他特殊字符必須轉換)

任何想法哪個模塊在這裏使用?我通過編碼模塊搜索,查找了一些編解碼器,嘗試了一些unicode對象的方法,但沒有找到明智的解決方案。

+0

我會存儲UTF-8字節的Latin-1字符相同數字,並在數據訪問層中進行字符集轉換。給出比HTML編碼更小的結果,並且不會誘使您直接從數據庫輸出到HTML頁面。 – bobince 2012-02-03 15:05:52

回答

4

使用的unicode.encode"xmlcharrefreplace"選項,但請注意,它不會爲你翻譯&&

>>> x = "a & 日本語: enči hallöle".decode("utf-8") 
>>> x.replace("&", "&").encode("latin-1", "xmlcharrefreplace") 
'a & 日本語: enči hall\xf6le' 
+0

謝謝!這正是我所期待的。 (現在等待7分鐘,直到我可以檢查你的答案「接受」) – mawimawi 2012-02-02 12:59:55

0

只需編碼爲UTF-8,即應保存。

>>> x.encode("UTF-8") 
'a & \xc3\xa6\xc2\x97\xc2\xa5\xc3\xa6\xc2\x9c\xc2\xac\xc3\xa8\xc2\xaa\xc2\x9e: en\xc3\x84\xc2\x8di hall\xc3\x83\xc2\xb6le'