django mysql utf8,django 读取mysql中文乱码问题

这篇博客讲述了在Python中使用MySQLdb模块连接数据库时遇到的中文乱码问题。作者通过检查MySQL配置和Python代码,发现是连接数据库时未指定字符集导致的。解决方案是在`connect`函数中添加`charset='utf8'`参数,确保以UTF-8编码进行连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

[zhouhh@Hadoop47 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协议,转载请注明来源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值