mysql 乱码产生探讨(3)
4。不管character_set_results 设不设成gbk,都不能正常显示结果
5。set names gbk;则插入现实都没问题。并且此时,一个uf8字符集的表的显示也没问题(实验三)。而且进行连接查询,亦没问题。
6。当然,set names utf8,如果在一个utf8的软件界面上,显示输出也没问题(navicat 验证了)
7。如果设成set names binary。在936代码页的显示界面上,可以看到,x3依然可以正常现实;但像实验三那样建的表就不能正常显示了。
--------
分析第2点:Data too long for column 'name' at row 1
我的char 够长,插入数据够短,所以不是数据太长了。也就是说这个提示是错误的。
我知道,如果表x3 默认字符集 是latin1的话,插入是没问题的(一直以来都是这么玩的);这是因为,虽然输入端mysql console 代码页是936,但因为三个主环境变量character_set_c%都是latin1,所以,mysql 认为insert x3 values('大') 输入的是2个字符(当然,如果从utf8界面输入,可能就认为是输入3个字符)。存储的自然也是2个字符。显示的时候也是显示的2个字符,只不过936代码页把这两个字符自然组合,显示成汉字了(早期dos环境常见现象)。
当默认字符集变为gbk的时候,发生了什么?不知道。。。。。
实验五
一个很狗屎的问题出现了:936 mysql console
环境变量如 实验一.1。
mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)
mysql> create table x4 (
-> name char(32) primary key);
Query OK, 0 rows affected (0.09 sec)
mysql> drop table x4;
Query OK, 0 rows affected (0.06 sec)
mysql> create table x4 (
-> name char(32) primary key) default charset utf8;
Query OK, 0 rows affected (0.10 sec)
mysql> insert x4 values('乃');
Query OK, 1 row affected (0.04 sec)
mysql> create table x5 (
-> name char(32) primary key) default charset gbk;
Query OK, 0 rows affected (0.09 sec)
mysql> insert x5 values('乃');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql>
结论,我实在对实验四中分析的第3点做出结论。character_set_system utf8 有关~~
摘自 dubiousway的专栏
相关新闻>>
- 发表评论
-
- 最新评论 更多>>