下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、mysql 乱码产生探讨乱码的产生,是因为单字节向多字节扩展引起的。b0a2 假如作为单字节存储(虽然表示的是1个汉字,但是由于是latin1单字节,所以认为b0a2是不相关的两个字符),此时假如把character_set_results变成utf8多字节,那么数据库mysql 会试图把每个单字节扩展成近 的(不知道详细的算法)双字节。所以乱码 反之,多字节向单字节转换时,不会有变动,仅仅是本来2各字节表示的一个字符b0a2变成了表示两个字符而已。- 这个说法阅历证是错误的。 数据库存储的内容(磁盘上,内存里)不会受character_set_的影响,只是提交,查询的过程中,受到字符集转换的
2、影响。 试验二 1。 create table y ( int, name char(4) default charset gb2312; 2。在不转变默认character_set_ 是 latin1的状况下,假如插入一个汉字,则显示乱码 3。改成 set names gb2312,显示没问题(cmd窗口中,cmd窗口代码页936) 4。我原以为如上述试验1种的结论2,“多字节向单字节转换时,不会有变动”。所以我开头以为,set names gb2312 后,把 character_set_results 改成latin1,显示不会出问题。结果, 一个汉字,则显示一个问号;两个汉字,则显示两
3、个问号的乱码(估量一个问号代表一个字符)。也就是说,改成character_set_results = latin1后,多字节的数据存储,在向单字节表示转换时,mysql把提出的信息“缩水了”,把两个字节,换算成了一个字节。 。如何,不让mysql缩水呢,我想到了character_set_results = binary;结果,果真显示正常。 ps 开发的用法mysql的应用程序,是对应作为自立的用法自己的character_set_client的字符集的cmd 窗口登陆mysql,也是作为一个自立的,拥有自己character_set_client变量的应用同理,打开不同的cmd窗口,都拥
4、有独自的character_set_client变量 试验三 07/16/2010 1。建一个默认字符集utf8的表(用navi ,在utf8的界面下 代码页65001),并且插入utf8编码的汉字高校 2。切换到mysql console(代码页936) 3。set names gbk; 然后显示刚才所建立的表,能正确现实吗? - 能!固然,只把character_set_results 成 gbk,也能正常显示 试验四 1。mysql console(代码页936)建立一个表x3 ( name char(32) ),默认字符集 default charset gbk; 2。默认环境变量 |
5、 character_set_client | latin1 | character_set_connection | latin1 | character_set_database | latin1 | character_set_filesystem | binary | character_set_results | latin1 | character_set_server | latin1 | character_set_system |utf8 /不知道对以下过程、分析是否有影响 character_set_client character_set_connection chara
6、cter_set_results 是latin1的状况下,插入数据:insert x3 values('大'); 显示:error 1406 (22001): data too long for umn 'name' at row 1 3。set character_set_client=gbk;然后 insert x3 values('大');插入没有问题,但明显,数据经过 (character_set_connection=latin1)的转换,已经是有损了 4。不管 character_set_results 设不设成 gbk,都不能正常显
7、示结果 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 够长,插入数据够短,所以不是数据太长了。也就是说这个提醒是错误
8、的。我知道,假如表x3 默认字符集 是latin1的话,插入是没问题的(向来以来都是这么玩的);这是由于,虽然输入端mysql console 代码页是936,但由于三个主环境变量character_set_c%都是latin1,所以,mysql 认为insert x3 values('大') 输入的是2个字符(固然,假如从utf8界面输入,可能就认为是输入3个字符)。存储的自然也是2个字符。显示的时候也是显示的2个字符,只不过936代码页把这两个字符自然组合,显示成汉字了(早期dos环境常见现象)。当默认字符集变为gbk的时候,发生了什么?不知道。 试验五 一个很狗屎的问题浮
9、现了:936 mysql console 环境变量如 试验一.1。 mysql set names latin1; query ok, 0 rows affect (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 val
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粉尘涉爆企业车工装卸作业安全操作规程
- 2025-2026学年大象爬的教案
- 建筑设计规范与设计技巧手册
- 产品测试方案与用例设计手册
- 超市顾客纠纷记录归档手册(标准版)
- 2025-2026学年剪纸教学设计效果
- 11.4 机械能及其转化 教学设计- 2023-2024学年人教版物理八年级下册
- 2025-2026学年狗肉炖锅教学设计
- 2025-2026学年环保标志设计教学设计
- 2024春七年级数学下册 第4章 因式分解4.2提取公因式法教学设计(新版)浙教版
- 校园物业项目服务方案
- 2026年教师岗位竞聘考试试题及答案
- 施工现场防洪排涝方案
- 小学交流轮岗实施方案
- 雨课堂学堂在线学堂云《舰载战斗机技术与保障(中国人民解放军海军航空)》单元测试考核答案
- 2025鄂尔多斯乌审旗消防救援大队招聘62名政府专职消防队员考试参考题库及答案解析
- 2026年江苏省无锡市重点学校小升初数学考试真题及参考答案
- 温州技师学院招聘真题
- 京东物流合作合同协议
- 种质资源库人员培训制度
- 单位档案查阅利用制度
评论
0/150
提交评论