yanglei1979
(高老庄二庄主)
高级会员

天蓬元帅
UID 73676
精华
0
积分 660
帖子 678
金钱 660 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-5-19 来自 深圳
状态 离线
|
请问utf8_unicode_ci 和 gb2312_chinese_ci 是什么意思?
如果用MYSQL5,PHP5,PHPMYADMIN10 这些版本组合的时候
当我们整理数据表的时候,就会发现,多了这些选项,
utf8_unicode_ci 和 gb2312_chinese_ci 还有其它的,一大堆让我们去选择
并且每个字段的整理列里面都会带着这些标志
请问这些是什么意思呢??
数据的编码处理,分为三个方面
一,网页编码
二,数据库存放编码
三,PHP操作数据库所设定的编码格式
那么,这三者又是什么关系呢?
但有一点是明确的,如果我们在网页里面使用UTF-8,编码的时候, 那么我们的数据库操作语句必须加上这一句: mysql_query('SET NAMES UTF8');
如果我们在网页里面使用gb2312,编码的时候, 那么我们的数据库操作语句必须加上这一句: mysql_query('SET NAMES GBK');
如果不这样加的时候,数据就会乱码.
如果是这一种一一对应的关系和规则,也好理解,但这个时候又多出出字段的整理问题,
我曾经做过试验,无论字段是utf8_unicode_ci 还是 gb2312_chinese_ci 都能正常使用,基本和网页编码没有关系.但为什么又要加这些呢?
而且当我们写数据恢复程序的时候,也就是读取外部TXT文件往数据表里面插入数据的时候, 如果字段的utf8_unicode_ci 还是 gb2312_chinese_ci 格式和数据表的这两种方式的整不对的话,数据就会全部乱码,看来这个还是有一定关系的.
那这三者到底是什么关系??我们又如果去控制和把握呢?谁能明确解释一下这三者的关系.
看了太多论坛上关于数据乱码的贴子了,基本上全部是跟搞不清这三者的关系有关,如果将这些基本的概念搞清楚了,我相信,在设计数据结构以及整个网站架构的时候应该不会再被乱码问题所困扰.
期待高手进行明确的指导,谢谢!
|  今霄酒醒何处?杨柳岸,晓风残月。 |
|