python,mysql,MySQLDb支持中文(utf-8编码)
来源:互联网 发布:手机转换格式软件 编辑:程序博客网 时间:2024/06/10 07:09
只要使用utf-8编码,就可以支持中文。我们的软件都是跑在linux上面的,都是utf-8,所以支持中文就是如何支持utf-8的。
python默认编码:是系统编码,所有有些机器不是utf-8的(可能没有中文原因,是ASCII编码)。
Mysql默认是latin1编码,很简单,开发商是瑞典公司。
让python的编码设为utf-8,在最开始运行:
import sys;# set the default encoding to utf-8# reload sys model to enable the getdefaultencoding method.reload(sys);# using exec to set the encoding, to avoid error in IDE.exec("sys.setdefaultencoding('utf-8')");assert sys.getdefaultencoding().lower() == "utf-8";
也可以直接执行sys.setdefaultencoding('utf-8'),我使用exec是因为windows下的elipse找不到这个函数会报错(执行没有问题,是site.py这个把setdefaultencoding删除了,使用reload就可以重新加载进来)。
现在所有的python的都是utf-8的了,但是为什么写入数据库的中文还是乱码呢?而且有时候会有错误,说latin1无法编码字符串。
MySQLDb连接上mysql后应该执行如下的语句:
db = MySQLdb.connect(host=Config.mysqlHost,
user=Config.mysqlUser, passwd=Config.mysqlPassword, db=Config.mysqlDatabase,
charset="utf8");
conn = db.cursor();
conn.execute("SET NAMES utf8");
db.commit();
不必要执行下面两句:
set names就会设置它们。
然后插入中文不会报错,但是用mysql客户端连接上看还是乱码,为什么呢?
是mysql客户端也要设置,不同的系统还不一样。
windows下进入数据库后,执行:set names gbk。linux执行set names utf8。
就没有问题了。实际上数据是以utf-8编码的。
最后转码的文件以中文命名,直接用windows的exporer打开看也是乱码,在系统下看是中文。
原因也是一样,ftp客户端也有编码格式的。用flashxp或者其他ftp工具,设置编码为utf-8就可以看到了。
还有一个地方很坑爹,就是必须指定json.dumps(ensure_ascii=False),默认是True,就会把中文搞成乱码。
- python,mysql,MySQLDb支持中文(utf-8编码)
- Python MySQLdb 使用utf-8 编码插入中文数据
- Python MySQLdb 使用utf-8 编码插入中文数据
- Python MySQLdb 使用utf-8 编码插入中文数据
- Python MySQLdb 使用utf-8 编码插入中文数据
- 让 SciTE 支持中文 utf-8 编码
- MySQL支持UTF-8编码全攻略
- MySql支持utf-8编码的问题
- python 中文编码 #-*-coding:utf-8-*-
- MySQL中文编码GBK,utf-8
- Unity3D 脚本UTF-8编码/Unity3D 脚本支持中文
- Unity3D 脚本UTF-8编码/Unity3D 脚本支持中文
- [原创] MySQL支持UTF-8编码全攻略
- Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8
- python利用utf-8编码判断中文英文字符(转)
- python写中文utf-8编码csv文件
- python利用utf-8编码判断中文英文字符
- python利用utf-8编码判断中文英文字符
- 通过超级程序员的唯一道路
- 关键字驱动测试框架
- fedora15 ati 显卡驱动安装
- char *转换为WCHAR[]
- C#常用日期格式处理转换
- python,mysql,MySQLDb支持中文(utf-8编码)
- WinCE EBOOT中的BootPart分析 基于WinCE6.0
- 字符串和指针
- QQ验证码识别源代码(DOT NET1.1)
- Android 语音识别学习小记--暑期大学生博客分享大赛 - 2011 Android 成长篇
- 关于通过php获取mysql表里的字段名的方法的整理
- design的根本原因
- 802.1x认证的具体配置过程
- gcc对C语言扩展