2011-05-17 67 views
2

I M與一些python腳本的工作,得到了與UTF8編碼原始字符串。首先我解碼它UTF8然後一些處理完成的,並在結束時,我編碼它回到UTF8並插入到DB(MySQL的),但在DB字符實時格式不呈現。Python的編碼問題

str = '<term>Beiträge</term>' 
str = str.decode('utf8') 
... 
... 
... 
str = str.encode('utf8') 

該字符串後的txt文件中找到其真正的形式,但在MYSQL_DB,我發現像這樣

<term>"Beiträge</term> 

任何想法,爲什麼發生這種情況? :-(

+2

檢查字符集 – 2011-05-17 13:11:16

+6

'str'是不是一個好變量名稱的數據庫連接。它隱藏了函數'str()'。另外,對不同類型的變量使用不同的變量名稱。 – eumiro 2011-05-17 13:11:29

+1

什麼是你的DB的字符集? – wong2 2011-05-17 13:12:07

回答

1

假設你正在使用MySQLdb的庫,您需要使用關鍵字參數來創建連接:

use_unicode 如果爲True,類似文本列返回使用 Unicode對象連接的字符集,否則, 返回字符串 字符串。設置。

&

字符集 如果提供,連接字符集將被更改爲這個 字符集(在MySQL-4.1和更新版本)。 這意味着use_unicode = TRUE。

您也應該檢查你的數據庫表的編碼。

+0

連接的字符集是UTF8,而我會使用MySQLdb的 – shahzad 2011-05-17 13:27:25

+0

數據庫表的編碼是「utf8_unicode_ci」 – shahzad 2011-05-17 13:39:39

+0

嘗試utf8_bin(無論UTF8二進制編碼被稱爲在MySQL中,我沒有看它)。 – marr75 2011-05-17 16:37:49