mysql 编码测试

insert into t1(v1) values(‘cn中国‘);
select * from t1;

1、输入gbk,交互latin1,数据库latin1
insert,客户端把gbk的输入当成latin1来解释,传给服务,服务不需要转码,把gbk当成latin1存入数据库,显示乱码。
select,服务不转码,返回给客户端,客户端latin1当成gbk解释,显示正确。
2、输入gbk,交互latin1,数据库gbk
insert 报错:ERROR 1366 (HY000): Incorrect string value: ‘\xD6\xD0\xB9\xFA‘ for column ‘v1‘ at row 1
原因是:客户端把gbk的输入当成latin1来解释,传给服务,服务转码,把latin1转化为gbk,出错。
3、输入gbk,交互latin1,数据库utf8
和1一样,这是因为utf8英文字符一个字节,多字节字符三个字节。
4、输入gbk,交互gbk,数据库latin1
insert 报错:ERROR 1366 (HY000): Incorrect string value: ‘\xD6\xD0\xB9\xFA‘ for column ‘v1‘ at row 1
原因是:客户端把gbk的输入当成gbk来解释,传给服务,服务把gbk转化为latin1,转化失败。
5、输入gbk,交互gbk,数据库gbk
insert,客户端把gbk的输入当成gbk来解释,传给服务,服务不需要转码,直接存入数据库,存入数据库正常。
select,服务不转码,返回给客户端,客户端gbk当成gbk解释,显示正确。
6、输入gbk,交互gbk,数据库utf8
insert,客户端把gbk的输入当成gbk来解释,传给服务,服务把gbk转成utf8,存入数据库,存入数据库正常。
select,服务把utf8转成gbk,返回给客户端,客户端gbk当成gbk解释,显示正确。
7、输入gbk,交互utf8,数据库latin1
insert 报错:ERROR 1366 (HY000): Incorrect string value: ‘\xD6\xD0\xB9\xFA‘ for column ‘v1‘ at row 1
原因是:客户端把gbk的输入当成utf8来解释,解释错误。
8、输入gbk,交互utf8,数据库gbk
同7
9、输入gbk,交互utf8,数据库utf8
同7

考虑下面的情况,输入gbk,交互gbk,数据库gbk,插入一条记录,查询回来正常。现在把交互改成utf8,会出现什么问题?
mysql> select * from t1;
+--------+
| v1 |
+--------+
| cn中国 |
+--------+
1 row in set (0.00 sec)

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+----------+
| v1 |
+----------+
| cn涓浗 |
+----------+
1 row in set (0.00 sec)

这是因为把utf8的中国,当成gbk解释,就是显示涓浗,也就是说,他们对应的Id是一样的。反过来,也是一样,把gbk的涓浗当成utf8解释,就是中国,如下:
mysql> insert into t1(v1) values(‘cn涓浗‘);
Query OK, 1 row affected (0.08 sec)

mysql> select * from t1;
+----------+
| v1 |
+----------+
| cn涓浗 |
| cn涓浗 |
+----------+
2 rows in set (0.00 sec)

mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+--------+
| v1 |
+--------+
| cn中国 |
| cn中国 |
+--------+
2 rows in set (0.00 sec)

时间: 2024-10-15 12:37:57

mysql 编码测试的相关文章

mysql编码问题总结

网上查了一些mysql编码相关的资料,在这里整理下,不对的地方欢迎各位批评指正. 1. mysql字符集相关的变量: - character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层字符集 – character_set_results:查询结果字符集 – character_set_database:当前选中数据库的默认字符集 – character_set

JAVA字符编码测试

几点注意: 1,ASCII码和ISO-8859-1都是单字节编码,ASCII码能表示128个字符,ISO-8859-1总共能表示256个字符.都不能表示中文,如果中文字符或其它不在IOS-8859码值范围内的字符会统一用3f表示(显示为"?", 通常所说的"黑洞"): 2,GBK兼容GB2312,是双字节编码,GB2312包含6763个汉字,GBK包含21003个汉字: 3,UTF-16为定长双字节编码,大大简化了字符串的操作,但是会浪费存储空间.JAVA以UTF-

mysql编码问题

mysql编码设置 mysql> SHOW VARIABLES LIKE 'character_set_%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | latin1 || character_set_connect

Mysql编码

查看Mysql编码两种命令: (1)mysql> show variables like 'character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connec

使用sysbench对mysql压力测试

使用sysbench对mysql压力测试 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.关于这个项目的详细介绍请看:https://github.com/akopytov/sysbench .它主要包括以下几种方式的测试: cpu性能 磁盘io性能 调度程序性能 内存分配及传输速度 POSIX线程性能 数据库性能(OLTP基准测试) sysbench的数据库OLTP测试支持MySQL.PostgreSQL.Oracle,目前主要用

修改Mysql编码集

通过MySQL命令行修改:mysql> set character_set_client=utf8;Query OK, 0 rows affected (0.00 sec)mysql> set character_set_connection=utf8;Query OK, 0 rows affected (0.00 sec)mysql> set character_set_database=utf8;Query OK, 0 rows affected (0.00 sec)mysql>

在window cmd中设置字符集后,mysql的测试

之前测试过,在centos下,所有字符集全部设为utf8,可以同时满足命令行和网页的需求. 在windows下,由于默认字符集为gbk,所以在命令行操作mysql时,需要设置set character_set_client = gbk; 今天发现,其实是要设置set character_set_results = gbk;即可,其它均为utf8或gbk都行. 另外尝试改变windows字符集,cmd下chcp 65001切换到utf8,但这好像是临时的,由于这次安装的wamp,用的自带的终端,c

查看修改mysql编码方式[转载]

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 1.需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为: >show variables like 'character%';+--------------------------+----------------------------+| Variable

mysql主从复制测试

mysql主从复制测试: 1. 配置主服务器:在主库上面添加复制账号GRANT REPLICATION SLAVE on *.* to 'mark'@'%' identified by 'mark' WITH GRANT OPTION; 在my.ini配置文件中添加配置:[mysqld]# 服务的唯一标识符server-id=1# 开启二进制日志,默认路径在data/下log-bin=mysql-bin # 二进制文件的格式 binlog_format=row 查看状态: SHOW MASTER