2014-10-10 144 views
0

在我開始詢問我已經看到的任何東西(Working with unicode encoded Strings from Active Directory via python-ldap)之前。Python使用unicode編碼的字符串

基本上我有一個Web表單,用戶可以提交數據。 作爲一個例子

我可以提交「(nichtverfügbar)」很好,當我轉到到數據庫中,我可以看到「(nichtverfügbar)」,

mysql> select * from tr_values where idvalues = 8905 \G *************************** 1. row *************************** idvalues: 8905 valuename: (nicht verfügbar) idkeys: 584 idvers: 1 idlangs: 5 1 row in set (0.00 sec)

然而,當我刷新我的頁面請參閱

對於我使用此更新的查詢。 DB = mysql.connect(DBHOST,DBUSER,DBPASS,DBNAME,use_unicode =真,字符集= 「utf-8」)

和我讀的查詢(在頁面上呈現數據) DB = mysql.connect(DBHOST, dbuser,dbpass,dbname)

現在如果我在讀取查詢中設置字符集,我的腳本將會中斷,如果沒有設置,那麼我會看到這個「(nichtverf gbar)」。正如我所提到submmiting數據工作正常但是顯示的數據(從數據庫中讀取)似乎並不奏效,它看起來是不是在做正確的編碼

  1. 的Python 2.7.3
  2. 進口操作系統,CGI ,MySQLdb as mysql
  3. Content-type:text/html; charset = UTF-8 \ r \ n
  4. meta http-equiv =「content-type」content =「text/html; charset = UTF-8」 >

mysql> show create table tr_values \G *************************** 1. row *************************** Table: tr_values Create Table: CREATE TABLE `tr_values` ( `idvalues` int(11) NOT NULL AUTO_INCREMENT, `valuename` text, `idkeys` varchar(45) DEFAULT NULL, `idvers` varchar(45) DEFAULT NULL, `idlangs` varchar(45) DEFAULT NULL, PRIMARY KEY (`idvalues`) ) ENGINE=InnoDB AUTO_INCREMENT=9986 DEFAULT CHARSET=utf8 1 row in set (0.00 sec)

順便說一句:我不會說德語。我希望我已經解釋得足夠了。

回答

0

好吧,我能夠通過執行以下操作

在我讀連接器添加到解決它「use_unicode =真,字符集=」 utf-8"

,然後我在哪裏產生我的數據添加.encode( 'UTF-8')

VALUENAME =行[3] .encode( 'UTF-8')

希望這有助於一些一個別人的。