django 讀取mysql中文亂碼問題
阿新 • • 發佈:2018-12-23
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協議,轉載請註明來源