MySQL字符编码问题,Incorrect string value

MySQL上插入汉字时报错如下,具体见后面分析。

Incorrect string value: ‘\xD0\xC2\xC8A\xBEW‘ for column ‘ctnr‘ at row 1

MySQL字符集相关参数:

character_set_server :  服务器字符集

collation_server     : 服务器校对规则

character_set_database : 默认数据库的字符集

collation_database     : 默认数据库的校对规则

character_set_client:服务器使用该变量取得链接中客户端的字符集

character_set_connection:服务器将客户端的query从character_set_client转换到该变量指定的字符集。

character_set_results:服务器发送结果集或返回错误信息到客户端之前应该转换为该变量指定的字符集

有两个语句可以设置连接字符集,如下:

A

SET NAMES ‘charset_name‘ 相当于下面三句:

mysql> SET character_set_client = x;

mysql> SET character_set_results = x;

mysql> SET character_set_connection = x;   #这个也设置了collation_connection的默认值x

B

SET CHARACTER SET charset_name 相当于下面三句:

mysql> SET character_set_client = x;

mysql> SET character_set_results = x;

mysql> SET collation_connection = @@collation_database;

character_set_results为NULL时,服务器对返回结果集不做任何转换

mysql> SET character_set_results = NULL;

因为字符集编码引起的问题在pg上报的错是:invalid byte sequence for encoding "UTF8",具体见参考

http://blog.csdn.net/beiigang/article/details/39582583

MySQL上字符集编码引起的问题报:Incorrect string value,具体见下面实验:

1

mysql> show variables like ‘%character_set%‘;

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client     | gbk                        |

| character_set_connection | gbk                        |

| character_set_database   | utf8                       |

| character_set_filesystem | binary                     |

| character_set_results    | gbk                        |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

2

mysql> create table tb_tt (id int, ctnr varchar(60));

Query OK, 0 rows affected (0.06 sec)

3

mysql> show create table tb_tt;

+-------+-----------------------------------------------------------------------

-----------------------------------------------------+

| Table | Create Table

|

+-------+-----------------------------------------------------------------------

-----------------------------------------------------+

| tb_tt | CREATE TABLE `tb_tt` (

`id` int(11) DEFAULT NULL,

`ctnr` varchar(60) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+-----------------------------------------------------------------------

-----------------------------------------------------+

1 row in set (0.00 sec)

4

mysql>  insert into tb_tt(id,ctnr) values(1,‘新華網‘);

Query OK, 1 row affected (0.02 sec)

5

mysql> select * from tb_tt;

+------+--------+

| id   | ctnr   |

+------+--------+

|    1 | 新華網 |

+------+--------+

1 row in set (0.02 sec)

6

mysql> set names ‘UTF8‘;

Query OK, 0 rows affected (0.00 sec)

7

mysql> show variables like ‘%character_set%‘;

+--------------------------+----------------------------+

| 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)

8

mysql>  insert into tb_tt(id,ctnr) values(2,‘新華網‘);

ERROR 1366 (HY000): Incorrect string value: ‘\xD0\xC2\xC8A\xBEW‘ for column ‘ctnr‘ at row 1

参考:

http://dev.mysql.com/doc/refman/5.5/en/globalization.html

-----------------

转载请著明出处:

blog.csdn.net/beiigang

时间: 2024-10-12 15:48:19

MySQL字符编码问题,Incorrect string value的相关文章

关于MYSQL数据库编码(Incorrect string value 错误)

今天遇到Mysql插入数据里有中文字符出现Incorrect string value的错误 现在UTF8是主流,使用GBK 有诸多不便,而且要经常转来转去. 今天碰到个错,是关于EMOJI表情的,EMOJI表情存不进UTF-8的数据库中. 解决办法,把MYSQL数据库编码改为 utf8mb4 即可.在my.ini中修改 这也是UTF8的一种最新的编码格式.用他十分方便 原文地址:https://www.cnblogs.com/catt/p/9393498.html

Python2爬虫获取的数据存储到MySQL中时报错"Incorrect string value: '\\xE6\\x96\\xB0\\xE9\\x97\\xBB' for column 'new' at row 1"的解决办法

由于一直使用python3进行编码,在使用Python2时,将爬虫数据连接数据库进行存储时,出现如上的报错,经查资料 是数据库编码问题. 如下转自:http://www.cnblogs.com/liuzhixin/p/6274821.html 的博客,在此感谢博主的慷慨分享之情. 错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智

php 解决MySQL插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误

在项目中向MySQL插入数据时,发现数据插入不完整,通过调试,发现插入语句也没什么特殊的错误.但是就是差不进去,于是就打开mysqli错误的调试 $ret = mysqli_query($this->conn, $sql) or die(mysqli_error($this->conn)); 结果弹出如下错误信息: Incorrect string value: '\xF0\x9F\x92\x8BTi...' 有错误信息就好办了,结果上网一查结果是:mysql编码格式utf-8格式,不支持带四

数据库插入四字节字符报错Incorrect string value: ‘\xF0\xA3\x8E\

数据库插入四字节字符报错Incorrect string value: '\xF0\xA3\x8E\xB4\xE9\xAB.. 改变字符编码utf8mb4貌似很二 直接找到四字节那个字符改成正常的字符貌似有点简单粗暴(俺就是这么干的!O(∩_∩)O哈哈~). 大家怎么看?

修改数据库mysql字符编码为UTF8

Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程. 步骤1:查看当前的字符编码方法 mysql> show variables like'character%'; +--------------------------+----------------------------+ |Variable_name |Value | +--------------------------+----------------------------+ |cha

如何修改mysql字符编码

如何修改mysql字符编码 说明:mysql字符编码修改有几种方法,直接修改配置文件,也可以通过命令的方式,此处只介绍修改配置文件的方法. 一. 检查mysql数据库的编码 输入如下sql语句执行,并得到结果 mysql> show variables like 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+-----

修改mysql字符编码出现Job failed to start解决办法

从网上找到如下资料: $sudo gedit /etc/mysql/my.cnf [client]下添加: default-character-set=utf8 [mysqld]下添加: default-character-set=utf8 然后保存退出 $ /etc/init.d/mysql restart 结果出现了: Since the script you are attempting to invoke has been converted to an Upstart job, you

java/mysql字符编码

碰到java/mysql字符编码问题,后来发现是utf-8编码相关问题, 最开始怀疑是在java springmvc相关框架处理中出现的错误,花费了很多时间去查找.这是思维的狭隘处,应该在整理理一遍,排除变量的方式,了解问题在哪. 幸好有另一台测试机及数据库,在该机器上部署的没有问题. 定位在本机的数据库上. 参考http://my.oschina.net/linland/blog/32525 http://blog.csdn.net/zhaozetu/article/details/86813

MySQL字符编码的讨论:如何处理emoji等4字节的Unicode字符 - utf8mb4 vs. utf8 Collations

1. Unicode是什么 Unicode(中文:万国码.国际码.统一码.单一码)是计算机科学领域里的一项业界标准.它对世界上大部分的文字系统进行了整理.编码,使得电脑可以用更为简单的方式来呈现和处理文字. 简单说来,就是把世界上所有语言的字,加上所有能找到的符号(如高音谱号.麻将.emoji)用同一套编码表示出来. 2. UTF-8是什么 UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码.可变长度的意思在于,如果能使