mysql 乱码产生探讨(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:17 点击:

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的专栏

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • mysql-mmm
  • mysqldump命令——MySQL数据库备份还原
  • Oracle数据导入MySQL的快捷工具:MySQL Migration Toolkit
  • 简简单单储存过程——循环一个select结果集
  • MySQL数据库十大优化技巧
  • Mysql安装笔记
  • Mysql主主复制架构配置
  • Mysql的Procedure 参数为NULL问题分析
  • MySQL Stmt预处理提高效率问题的小研究
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1