Python Web操作MySQL乱码问题的解决

2008年11月16日 | 分类: Configuration | 标签: , , ,
乱码,身为CJK语言国度的程序员永恒的主题……

乱码,在stardict里面查了一下翻译,居然出来这么一长串:

characters changed to be irrecognizable because different coder or other reasons

不管怎么说,这次是又碰上乱码了。

症状是这样的,写了几个psp文件,内容大概是通过POST方法从表单获取数据,写入数据库然后另一个页面调用数据库内容显示。结果在写完之后调用显示页面,提示错误:unicodeDecodeError: 'ascii' codec can't decode byte,看来是因为我数据库里的字段用了中文,显示不出来,然后在MySQL里面SELECT * 了一下,发现含中文的内容都是???字样的乱码(以前怎么就没注意捏……)。

上网搜,发现了这个网页:http://blog.csdn.net/foyuan/archive/2007/07/27/1711100.aspx,文中提示了四个步骤确保乱码消失。

因为我写的是PSP页面,不是纯粹的python,似乎不能用#-*- coding -*-来指定编码,但是参照里面提示的两个步骤,我最后也成功解决了乱码问题:

1. 解决MySQL显示乱码,修改/etc/mysql/my.cnf文件,分别在[client]、[mysqld]后指定编码:default-character-set = utf8,重启mysql服务。

2. 解决PSP页面不能解析Unicode字符,在python语法块内,导入sys包,然后指定编码:

import sys
...
 
reload(sys)
sys.setdefaultencoding('utf-8')

这样就搞定了,等我后续看看有其他什么问题没……

  1. 2008年11月17日11:38

    python 呵呵 考完研折腾appspot去
    不知道google的哪儿跟GQL会不会也出乱码。。。

  2. 2008年11月16日22:45

    python呵呵 考完研也折腾这个 捣鼓appspot去
    不知道google的GQL数据库会不会乱码

    • 2008年11月17日12:15

      @YuLei666, 你的留言居然被认作spam了……orz