이 기사에서는 Mysql에서 utf8_unicode_ci와 utf8_general_ci의 차이점이 무엇인지 설명합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
Mysql에서 utf8_general_ci와 utf8_unicode_ci의 차이점은 무엇인가요? 프로그래밍 언어에서 유니코드는 일반적으로 문자 왜곡을 방지하기 위해 한자를 처리하는 데 사용됩니다. 그렇다면 MySQL에서는 왜 모든 사람이 utf8_unicode_ci 대신 utf8_general_ci를 사용합니까?
오랜 시간 사용해본 결과 utf_bin과 utf_general_ci의 차이점을 몰랐습니다. .
ci는 대소문자를 구분하지 않습니다. 즉, a와 A는 문자 판단에서 동일하게 처리됩니다.
bin은 이진수이고 a와 A는 다르게 처리됩니다.
예를 들어 다음을 실행하면: * FROM table WHERE txt = 'a'
그러면 utf8_bin에서 txt = 'A'인 행을 찾을 수 없지만 utf8_general_ci는 찾을 수 있습니다.
utf8_general_ci는 대소문자를 구분하지 않으므로 사용자 이름을 등록할 때 이를 사용해야 하며 이메일.
utf8_general_cs는 대소문자를 구분합니다. 이를 사용자 이름과 이메일에 사용하면 부정적인 결과가 발생합니다.
utf8_bin: 문자열. 대소문자를 구분하며 바이너리 내용을 저장할 수 있습니다
1. 공식 문서 설명
다음은 utf8_unicode_ci 및 utf8_general_ci에 대한 Mysql 5.1 중국어 매뉴얼에서 발췌한 내용입니다.
ä = A
Ö = O
Ü = U
ß = s
ß = ss
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
2. 간략한 요약
utf8_unicode_ci 및 utf8_general_ci는 중국어와 영어 사이에 큰 차이가 없습니다. . utf8_general_ci는 교정 속도가 빠르지만 정확도가 약간 떨어집니다.
utf8_unicode_ci는 정확도가 높지만 교정 속도가 약간 느립니다.
3. 상세 요약
1. 언어의 경우 utf8_unicode_ci 정렬이 제대로 이루어지지 않은 경우에만 해당 언어와 관련된 utf8 문자 집합 대조 규칙이 실행됩니다. 예를 들어 독일어와 프랑스어의 경우 utf8_unicode_ci는 잘 작동하므로 이 두 언어에 대해 특별한 utf8 대조 규칙을 만들 필요가 없습니다.2. utf8_general_ci는 '?'가 'ss'가 아니라 's'와 같다는 점을 제외하면 독일어와 프랑스어에도 적용됩니다. 애플리케이션이 이를 수용할 수 있다면 속도가 빠르기 때문에 utf8_general_ci를 사용해야 합니다. 그렇지 않으면 더 정확하므로 utf8_unicode_ci를 사용하십시오.
[mysqld] init_connect='SET NAMES utf8′ default-character-set=utf8 default-collation = utf8_general_ci
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
附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数据了。
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的MySQL视频教程栏目!
위 내용은 MySQL에서 utf8_unicode_ci와 utf8_general_ci의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!