web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100

对于中文编码的问题,总会出现各种各样恶心的错误,还不知道应该怎么解决,首先,你从最开头就应该关注编码问题,尽量保证所有的编码方式都是一致的

用python+web.py+mysql来写程序,首先要保证如下几个部分的编码都是对滴

主要包括如下几个部分:

1:python 写的程序, 统一用 utf-8 ,以及重新载入utf-8

2: web.py 的模板, 也就是html程序
  统一保存格式为utf-8 , 并且html 申明 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
3:Mysql 建立数据库,数据库使用UTF-8(包括建数据库和建表的时候,把编码格式都使用utf8)

但最后还是会有这样的问题,错误提示如下:

[2015-06-02 10:35:38] [INFO] self.pool <DBUtils.PooledDB.PooledDB instance at 0x028E7E18>
[2015-06-02 10:35:38] [INFO] conn:
[2015-06-02 10:35:38] [INFO] <DBUtils.PooledDB.PooledDedicatedDBConnection instance at 0x02ADA580>
[2015-06-02 10:35:38] [INFO] cursor:
[2015-06-02 10:35:38] [INFO] <MySQLdb.cursors.Cursor object at 0x029EED10>
[2015-06-02 10:35:38] [ERROR] DB_execute error: Traceback (most recent call last):
File "E:\code\mid-project-2015-6-2\dailypaper\model.py", line 131, in execute
cursor.execute(sql)
File "C:\Python26\lib\site-packages\dbutils-1.1-py2.6.egg\DBUtils\SteadyDB.py", line 552, in tough_method
result = method(*args, **kwargs) # try to execute
File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 149, in execute
query = query.encode(charset)
UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters in position 86-100: ordinal not in range(256)

然后能看到的是cursors.py里面的query = query.encode(charset),那么应该是这个charset的原因,直接把charset改成‘utf-8‘就行了,query = query.encode(‘utf-8‘)

然后就可以插入,并且可以select出来正确的值,然后从网页上也能够看到啦!!!

web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100

时间: 2024-12-11 15:55:37

web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100的相关文章

Mysql DBA 高级运维学习笔记-Mysql插入中文乱码问题

1.1 mysql插入中文数据乱码 1.1.1MySQL中添加中文数据并查看检表语句 a.创建cuizhong测试数据库并查看建表语句 mysql> create database cuizhong; Query OK, 1 row affected (0.00 sec) mysql> show create database cuizhong\G *************************** 1. row *************************** Database:

mysql 插入中文时出现ERROR 1366 (HY000): Incorrect string value: &#39;\xC0\xEE\xCB\xC4&#39; for column &#39;usern ame&#39; at row 1

1 环境: MySQL Server 6.0  命令行工具 2 问题 :  插入中文字符数据出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern ame' at row 1 3 当时环境: mysql> insert into user(id , username , birthday, sex, address) values('2' , ' 李四' , '1980 12

mysql 插入中文字段报错 &quot;Incorrect string value: &#39;\\xE6\\xB5\\x8B\\xE8\\xAF\\x95...&#39; for column &#39;title&#39; at row 1&quot;

1. 查看一个 database 或一个 table 的编码show create database mytestdb;show create table testapp_article; mysql> show create table testapp_article;+-----------------+-----------------------------------------------------------------------------------------------

解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: ‘\xE5\xB0\x8F\xE6\x98\x8E‘ for column ‘name‘ at row 1

原文:解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'name' at row 1 报错内容: mysql> insert into person values (1,22,'小明');ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for colum

MySQL 插入中文不乱码的5种方法

MySQL 插入中文不乱码的5种方法: 方法一: 登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 mysql> set names latin1; mysql> source  test.sql; 方法二: 在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件    [[email protected] ~]# cat test.sql  set names latin1; insert ***************

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

总结写在前面, 总结: 当Java通过jdbc链接mysql插入中文时,要保证程序可以正常执行,而且插入的中文不会乱码, mysql服务器端,对数据表(不是数据库)的编码设置,要保证是支持中文的,例如gbk, gb2312, utf-8 jdbc的连接配置,要开启useUnicode=true,并且要设置一个支持中文的编码,不需要跟mysql表的编码保持一致,只需要支持中文就行.例如characterEncoding=utf8 本身的Java文件的编码需要支持中文 ===============

Mysql 插入中文错误:Incorrect string value: &#39;\xE7\xA8\x8B\xE5\xBA\x8F...&#39; for column &#39;course&#39; at row 1

create table my_user ( id tinyint(4) not null auto_increment, account varchar(255) default null, password varchar(255) default null, primary key (id) ) 插入语句 insert into my_user values('1','admin','admin'); insert into my_user values('2','admin','admi

MySQL插入中文数据乱码问题

一.MySQL插入中文不乱码5中方法小结 方法一:登录mysql,先做“set names latin1;”,然后再执行更新语句或执行语句文件. 方法二:在aql文件中指定set names latin1; 然后登录mysql,通过如下命令执行. 方法三:在sql文件中指定set names latin1; 然后通过mysql命令导入数据 方法四:通过指定mysql命令的字符集参数实现--default-character-set=latin1 方法五:在配置文件里设置客户端及服务端相关参数 不

MySQL插入中文数据报错

在操作数据库插入中文会出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\xC4\xE3\xBA\xC3' for column 'username' at row 1 解决方案: 在cmd中查看当前数据库的编码设置:Server.Db.Client.Conn 各自的编码是否是如下设置 若Client和Conn 编码不是平台码就会出现中文乱码情况获报错.修改MySQL安装文件下的 My.ini 文件即可. 注意: 在MySQL的5.1版本时