【问题标题】:Python Working with unicode encoded StringsPython 处理 unicode 编码的字符串
【发布时间】:2014-12-05 20:41:14
【问题描述】:

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

基本上我有一个网络表单,用户可以在其中提交数据。 举个例子

我可以很好地提交“(nicht verfügbar)”,当我转到数据库时,我可以看到“(nicht verfü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)

现在,如果我在读取查询上设置字符集,我的脚本将中断,如果未设置,那么我将看到这个“(nicht verf�gbar)”。正如我提到的,提交数据工作正常,但是显示数据(从 db 读取)似乎没有工作,并且看起来它没有正确进行编码

  1. Python 2.7.3
  2. 导入 os,cgi,MySQLdb 为 mysql
  3. 内容类型: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)

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

【问题讨论】:

    标签: python mysql cgi


    【解决方案1】:

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

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

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

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

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 2020-08-28
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多