對於中文編碼的問題,總會出現各類各樣噁心的錯誤,還不知道應該怎麼解決,首先,你從最開頭就應該關注編碼問題,儘可能保證全部的編碼方式都是一致的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