Python使用unicode编码的字符串

时间:2014-10-10 15:58:53

标签: python mysql cgi

在我开始询问我已经看过的任何事情之前(Working with unicode encoded Strings from Active Directory via python-ldap)。

基本上我有一个用户可以提交数据的网络表单。 作为一个例子

我可以提交“(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 = True,charset =“utf8”)

和我的阅读查询(在页面上呈现数据) db = mysql.connect(dbhost,dbuser,dbpass,dbname)

现在,如果我在读取查询上设置字符集,我的脚本将会中断,如果没有设置,那么我将看到这个“(nichtverf gbar)”。正如我提到的,submmiting数据工作正常然而显示数据(从db读取)似乎没有工作,看起来它没有正确地进行编码

  1. Python 2.7.3
  2. import os,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”>
  5. 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)

    顺便说一句:我不会说德语。我希望我已经解释得足够多了。

1 个答案:

答案 0 :(得分:0)

好的,我可以通过执行以下操作来修复它

在我的读取连接器上添加“use_unicode = True,charset =”utf8“

然后我在哪里生成我的数据添加.encode('utf-8')

valuename = row [3] .encode('utf-8')

希望这有助于一些人。