百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?
分享文章到:

Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?

发布时间:08/01 来源:未知 浏览: 关键词:
?本篇文章给大家带来的内容是对于Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。

本篇文章给大家带来的内容是对于Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。

Mysql中utf8_general_ci与utf8_unicode_ci有什么区别呢?在编程说话中,平常用unicode对中文字符做处置,防止涌现乱码,那么在MySQL里,为何大家都运用utf8_general_ci而不是utf8_unicode_ci呢?

用了这么长工夫,发明本人居然不晓得utf_bin和utf_general_ci这两者到底有什么区别。。
ci是 case insensitive, 即 "大小写不敏锐", a 和 A 会在字符推断中会被当成同样的;
bin 是二进制, a 和 A 会别区别看待.
例如你运转:
SELECT * FROM table WHERE txt = 'a'
那么在utf8_bin中你就寻不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以.
utf8_general_ci 不区分大小写,这个你在注册会员名和邮箱的时候就要运用。
utf8_general_cs 区分大小写,要是会员名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,并且可以存二进制的内容

一、官方文档注明
下面摘录一下Mysql 5.1中文手册中对于utf8_unicode_ci与utf8_general_ci的注明:

目前,utf8_unicode_ci校对法则仅局部支撑Unicode校对法则算法。一些字符还是不克不及支撑。而且,不克不及完全支撑组合的记号。这主要影响越南和俄罗斯的一些少数民族说话,如:Udmurt 、Tatar、Bashkir和Mari。

utf8_unicode_ci的最主要的特点是支撑扩展,即当把一个字母看作与其它字母组合相称时。例如,在德语和一些其它说话中‘?'等于‘ss'。

utf8_general_ci是一个遗留的 校对法则,不支撑扩展。它仅能够在字符之间进行逐个比拼。这意味着utf8_general_ci校对法则进行的比拼速度很快,但是与运用utf8_unicode_ci的 校对法则比拟,比拼准确性较差)。

例如,运用utf8_general_ci和utf8_unicode_ci两种 校对法则下面的比拼相称:
? = A
? = O
ü = U

两种校对法则之间的区别是,关于utf8_general_ci下面的等式成立:
? = s

但是,关于utf8_unicode_ci下面等式成立:
? = ss

关于一种说话仅当运用utf8_unicode_ci排序做的欠好时,才施行与概括说话相干的utf8字符集 校对法则。例如,关于德语和法语,utf8_unicode_ci工作的非常不错,因而不再需要为这两种说话新建特别的utf8校对法则。

utf8_general_ci也适用与德语和法语,除了‘?'等于‘s',而不是‘ss'以外。要是你的利用能够承受这些,那么应当运用utf8_general_ci,由于它速度快。不然,运用utf8_unicode_ci,由于它比拼正确。

要是你想运用gb2312编码,那么倡议你运用latin1作为数据表的默许字符集,这样就能直接用中文在下令行工具中插入数据,而且可以直接显示出来.而不要运用gb2312或者gbk等字符集,要是担忧查询排序等题目,可以运用binary属性束缚,例如:

create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;

二、简短总结
utf8_unicode_ci和utf8_general_ci对中、英文来说没有本色的差别。
utf8_general_ci校对速度快,但正确度稍差。
utf8_unicode_ci正确度高,但校对速度稍慢。

要是你的利用有德语、法语或者俄语,请一定运用utf8_unicode_ci。个别用utf8_general_ci就够了,到此刻也没发明题目。。。

三、细致总结

1、关于一种说话仅当运用utf8_unicode_ci排序做的欠好时,才施行与概括说话相干的utf8字符集校对法则。例如,关于德语和法语,utf8_unicode_ci工作的非常不错,因而不再需要为这两种说话新建特别的utf8校对法则。
2、utf8_general_ci也适用与德语和法语,除了‘?'等于‘s',而不是‘ss'以外。要是你的利用能够承受这些,那么应当运用 utf8_general_ci,由于它速度快。不然,运用utf8_unicode_ci,由于它比拼正确。

用一句话概略上面这段话:utf8_unicode_ci比拼正确,utf8_general_ci速度比拼快。平常状况下 utf8_general_ci的正确性就够我们用的了,在我看过许多程序源码后,发明它们大多数也用的是utf8_general_ci,所以创建数据 库时个别选用utf8_general_ci就可以了

四、怎样在MySQL5.0中运用UTF8
在 my.cnf中添加以下参数

[mysqld]
init_connect='SET NAMES utf8′
default-character-set=utf8
default-collation = utf8_general_ci

施行查询 mysql> show variables; 相干如下:

character_set_client | utf8 
character_set_connection | utf8 
character_set_database | utf8 
character_set_results | utf8 
character_set_server | utf8 
character_set_system | utf8
collation_connection | utf8_general_ci 
collation_database | utf8_general_ci 
collation_server | utf8_general_ci

个人见解,关于数据库的运用,utf8 - general 已经脚够的正确,而且相较与 utf8 - unicode速度上有优势,固可安心采纳之

附1:旧数据升级方法

以本来的字符集为latin1为例,升级成为utf8的字符集。本来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。

首先步:导出旧数据

mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql

第二步:转换编码(相似unix/linux环境下)

iconv -t utf-8 -f gb2312 -c old.sql > new.sql

或者可以去除 -f 参数,让iconv主动推断本来的字符集

iconv -t utf-8 -c old.sql > new.sql

在这里,假定本来的数据默许是gb2312编码。

第三步:导入

修改old.sql,在插入/更新语句开端以前,添加一条sql语句: "SET NAMES utf8;",保留。

mysql -hlocalhost -uroot my_db < new.sql

大功告成!!

附2:支撑查看utf8字符集的MySQL客户端有
1.) MySQL-Front,听说这个项目已经被MySQL AB勒令休止了,不知为什么,要是国内还有不少破解版可下列载(不代表我举荐运用破解版 :-P)。
2.) Navicat,另一款很好的MySQL客户端,汉化版刚出来,还约请我试用过,总的来说还是不错的,不外也需要付费。
3.) PhpMyAdmin,开源的php项目,非常好。
4.) Linux下的终端工具(Linux terminal),把终端的字符集设定为utf8,连贯到MySQL之后,施行 SET NAMES UTF8; 也能读写utf8数据了。

本篇文章到这里就已经全部完毕了,更多其他出色内容可以关注百分百源码网的MySQL视频教程栏目!

以上就是Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板