今天遇到一个问题,用Python往MySQL插入数据时,若数据中包含中文会报类似下面的错误:

ERROR 1366: Incorrect string value: '\xE4\xB8\xAD\xE5\x9B\xBD' for column 'tname' at row 1

但若之间在MySQL命令行中插入,就不会报错。

后来找到解决办法:

步骤1:

  在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以解决乱码问题。在这个配置文件中 [mysql] 与客户端配置相关,[mysqld] 与服务器配置相关。默认使用latin1字符集,改成gbk或utf-8,然后重启MySQL服务:
  

[mysql]
default-character-set=latin1 改成 default-character-set=utf8 或者 default-character-set=gbk
[mysqld]
character-set-server=latin1 改成 character-set-server=utf8 或者 character-set-server=gbk

重启MySQL服务之后,在建立新表时,字符串字段就会默认使用utf-8编码。

另外,在建立新表时,可以通过sql语句:DEFAULT CHARSET=gbk来指定使用gbk字符集。如:

CREATE TABLE `phonecalls` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`starttime` varchar(32) DEFAULT NULL COMMENT '通话起始时间',
`location` varchar(20) DEFAULT NULL COMMENT '通话地点',
`initiateType` varchar(10) DEFAULT NULL COMMENT '呼叫类型-主叫:1,被叫:2',
`talkTo` varchar(16) DEFAULT NULL COMMENT '对方号码',
`callDuration` tinyint(4) DEFAULT NULL COMMENT '通话时长,不足一分钟按一分钟计算',
`callDurationExact` varchar(20) DEFAULT NULL COMMENT '准确的通话时长',
`callType` varchar(16) DEFAULT NULL COMMENT '通话类型-本地通话:1,省内长途:2,国内长途:3,国际长途:4',
`bizType` varchar(16) DEFAULT NULL COMMENT '业务类型-一般为语音电话',
`fee` float DEFAULT '' COMMENT '通话费用',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk; -- 指定字符集为gbk

步骤2:

Python连接MySQL的代码中,要指明使用utf-8或gbk字符集,即写成:

conn = MySQLdb.connect(host="localhost",user="root",passwd="",db="test",charset='utf8')#注意添加charset=utf8或者gbk

就能正确插入中文了。

参考:http://www.iteye.com/topic/406843

解决Python往MySQL插入中文时报错的问题的更多相关文章

  1. node mysql插入中文时报错

    一开始以为是前端传参.数据类型的问题,于是就直接把sql语句中的参数直接改成字符串值,但发现还是报500错误. 所以,这就排除了前端的问题. 剩下的就是数据库了,发现我的表设置有问题.凡是有中文数据的 ...

  2. 解决python代码中含有中文报错

    python中写入中文时报错如下图所示: 依照网上解决方法:在py文件中加入:#encoding=utf-8 然后继续报错如下图所示: 解决方法: 在py文件中加入: import sysreload ...

  3. mysql 插入中文报错: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value...

    总结写在前面, 总结: 当Java通过jdbc链接mysql插入中文时,要保证程序可以正常执行,而且插入的中文不会乱码, mysql服务器端,对数据表(不是数据库)的编码设置,要保证是支持中文的,例如 ...

  4. Mysql新建表,插入中文时报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”问题

    有时候我们在往数据库中输入信息时,如果输入的内容是中文,会报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”. 例如: ...

  5. mysql插入中文报错的问题

    报错:1366, "Incorrect string value: '\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...' for column ' 由于公司原因之前一直在使 ...

  6. Mysql 插入时间时报错Incorrect datetime value: '' for column 'createtime'

    在网上找了很多方法总结如下: 1.MySQL驱动版本的问题.这种一般是在mYSQL版本更新了之后才会报错.解决方法在jdbc里添加“&useOldAliasMetadataBehavior=t ...

  7. MySQL插入中文数据报错

    在操作数据库插入中文会出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\xC4\xE3\xBA\xC3' for column 'userna ...

  8. MySQL插入数据时报错Cause: java.sql.SQLException: #HY000的解决方法

    数据库中有字段要求不能为空,但是insert插入的时候,改字段没有值

  9. 解决hibernate向mysql插入中文乱码问题

    一.mysql的问题解决 MySQL会出现中文乱码的原因不外乎下列几点:   1.server本身设定问题,例如还停留在latin1   2.table的语系设定问题(包含character与coll ...

随机推荐

  1. 设计模式学习——策略模式(Strategy Pattern)

    0. 前言 最近在重构公司的一个项目的时候,在抽取DES加密重复部分代码的时候,突然间想起了策略模式,感觉策略模式好像可以应用上,于是重新学习了下策略模式.注:在DES加密中,有DES和TDES算法, ...

  2. Win7下Python2.7环境安装paramiko模块

    Win7下Python2.7环境安装paramiko模块,经过安装并测试成功,整理文档如下: 1.下载安装Windows版本的Python2.7,我默认装在C:\Python27 我的python已经 ...

  3. yum管理

    一.yum发展与作用     在linux系统维护中管理员经常遇到软件包的依赖问题,有时无法解决,比如你在安装库文件时常出现报错问题,说依赖其它软件包.由于这个问题一直困绕linux的广大爱好者,开源 ...

  4. Android Studio-设置鼠标悬停显示方法声明

  5. 配置red hat的ip 自动地址

    三个文件: 需要配置的内容包括: nameserver dns, hostname和gateway, ip地址等等. /etc/resolv.conf中配置dns, 这个也可以在 sysconfig/ ...

  6. Linux中postfix邮件服务器的搭建

    postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在 ...

  7. JavaWeb学习总结(五十一)——邮件的发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  8. Android应用如何监听自己是否被卸载及卸载反馈功能的实现

    一个应用被用户卸载肯定是有理由的,而开发者却未必能得知这一重要的理由,毕竟用户很少会主动反馈建议,多半就是用得不爽就卸,如果能在被卸载后获取到用户的一些反馈,那对开发者进一步改进应用是非常有利的.目前 ...

  9. PHP多态的理解

    多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果.也即不同类的对象收到相同的消息时,将得到不同的结果.在实际的应用开发中,采用面向对象中的多态主要在于可以将不同的子类对象都当作 ...

  10. Bus Hound 的使用方法

    背景: 最近在研究USB相关协议,需要对USB数据进行抓取分析,Bus Hound是个非常赞的工具,在此将其使用方法记录下来,以备下次快速上手使用. 正文: 主界面如下: 首先关注菜单栏三个选项: C ...