1. 程式人生 > >django 讀取mysql中文亂碼問題

django 讀取mysql中文亂碼問題

2012-11-13
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

讀取mysql

[[email protected] t3]$ cat product.py
from django.shortcuts import render_to_response
import MySQLdb

def product_list(request):
    db = MySQLdb.connect(user='root', db='t3', passwd='', host='localhost')
    cursor = db.cursor()
    cursor.execute('SELECT name FROM product ORDER BY name')
    names = [row[0] for row in cursor.fetchall()]
    db.close()
    return render_to_response('product_list.html', {'names': names})

結果從資料庫裡取出的name欄位的中文都是亂碼。但模板中的中文則是正常顯示。 碰到這種亂碼問題,可能是多方面的原因。 1.mysql 不是utf8編碼,此時需設定mysql的環境 修改/etc/my.cnf或windows下的mysql.ini [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 重啟mysql 2.模板html檔案和python檔案沒有儲存為utf8,並且設定utf8解碼,則模板中的中文會顯示為亂碼。 3.讀取時沒有指定用utf8來連線。 我的情況是第三種。 將Product.py的connect改為:

db = MySQLdb.connect(user='root', db='t3', passwd='', host='localhost',charset='utf8')

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源