对于中文编码的问题,总会出现各类各样恶心的错误,还不知道应该怎么解决,首先,你从最开头就应该关注编码问题,尽可能保证全部的编码方式都是一致的html
用python+web.py+mysql来写程序,首先要保证以下几个部分的编码都是对滴python
主要包括以下几个部分:mysql
1:python 写的程序, 统一用 utf-8 ,以及从新载入utf-8web
2: web.py 的模板, 也就是html程序
统一保存格式为utf-8 , 而且html 申明 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
3:Mysql 创建数据库,数据库使用UTF-8(包括建数据库和建表的时候,把编码格式都使用utf8)sql
但最后仍是会有这样的问题,错误提示以下:数据库
[2015-06-02 10:35:38] [INFO] self.pool <DBUtils.PooledDB.PooledDB instance at 0x028E7E18>
[2015-06-02 10:35:38] [INFO] conn:
[2015-06-02 10:35:38] [INFO] <DBUtils.PooledDB.PooledDedicatedDBConnection instance at 0x02ADA580>
[2015-06-02 10:35:38] [INFO] cursor:
[2015-06-02 10:35:38] [INFO] <MySQLdb.cursors.Cursor object at 0x029EED10>
[2015-06-02 10:35:38] [ERROR] DB_execute error: Traceback (most recent call last):
File "E:\code\mid-project-2015-6-2\dailypaper\model.py", line 131, in execute
cursor.execute(sql)
File "C:\Python26\lib\site-packages\dbutils-1.1-py2.6.egg\DBUtils\SteadyDB.py", line 552, in tough_method
result = method(*args, **kwargs) # try to execute
File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 149, in execute
query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100: ordinal not in range(256)ui
而后能看到的是cursors.py里面的query = query.encode(charset),那么应该是这个charset的缘由,直接把charset改为'utf-8'就好了,query = query.encode('utf-8')编码
而后就能够插入,而且能够select出来正确的值,而后从网页上也可以看到啦!!!code