Heim >Datenbank >MySQL-Tutorial >Was ist der Unterschied zwischen utf8_unicode_ci und utf8_general_ci in MySQL?
Der Inhalt dieses Artikels befasst sich mit dem Unterschied zwischen utf8_unicode_ci und utf8_general_ci in MySQL? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Was ist der Unterschied zwischen utf8_general_ci und utf8_unicode_ci in MySQL? In Programmiersprachen wird Unicode normalerweise zur Verarbeitung chinesischer Zeichen verwendet, um verstümmelte Zeichen zu verhindern. Warum verwenden dann in MySQL alle utf8_general_ci anstelle von utf8_unicode_ci?
Nachdem ich es so lange verwendet hatte, stellte ich fest, dass ich nicht einmal den Unterschied zwischen utf_bin und utf_general_ci kannte. .
ci unterscheidet nicht zwischen Groß- und Kleinschreibung, d. h. a und A werden bei der Zeichenbeurteilung gleich behandelt.
bin ist binär, a und A werden unterschiedlich behandelt. Wenn Sie Folgendes ausführen:
SELECT * FROM table WHERE txt = 'a'
Dann finden Sie die Zeile mit txt = 'A' nicht in utf8_bin, utf8_general_ci jedoch schon.
utf8_general_ci unterscheidet nicht zwischen Groß- und Kleinschreibung. Diesen verwenden Sie bei der Registrierung Ihres Benutzernamens und Ihrer E-Mail-Adresse.
utf8_general_cs unterscheidet zwischen Groß- und Kleinschreibung.
utf8_bin: string Jeder String wird mit Binärdaten kompiliert und gespeichert. Es unterscheidet zwischen Groß- und Kleinschreibung und kann binäre Inhalte speichern
1. Offizielle Dokumentbeschreibung
Das Folgende ist ein Auszug aus dem chinesischen Handbuch von MySQL 5.1 zu utf8_unicode_ci und utf8_general_ci:
Ä = A
Ö = O
Ü = U
ß = s
ß = ss
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
2. Kurze Zusammenfassung
utf8_unicode_ci und utf8_general_ci für Chinesisch und Englisch Es gibt keinen wirklichen Unterschied. utf8_general_ci ist beim Korrekturlesen schnell, aber etwas ungenauer.
utf8_unicode_ci hat eine hohe Genauigkeit, aber die Proofing-Geschwindigkeit ist etwas langsamer.
3. Detaillierte Zusammenfassung
1. Für eine Sprache gilt: Nur wenn die utf8_unicode_ci-Sortierung nicht richtig durchgeführt wurde, erfolgt das Korrekturlesen des utf8-Zeichensatzes für die jeweilige Sprache Regel durchgeführt. Für Deutsch und Französisch funktioniert beispielsweise utf8_unicode_ci einwandfrei, sodass keine speziellen utf8-Sortierungsregeln für diese beiden Sprachen erstellt werden müssen.2. utf8_general_ci gilt auch für Deutsch und Französisch, außer dass „?“ gleich „s“ anstelle von „ss“ ist. Wenn Ihre Anwendung dies akzeptieren kann, sollten Sie utf8_general_ci verwenden, da es schnell ist. Andernfalls verwenden Sie utf8_unicode_ci, da es genauer ist.
4. So verwenden Sie UTF8 in MySQL5.0
Fügen Sie die folgenden Parameter in my.cnf hinzu
[mysqld] init_connect='SET NAMES utf8′ default-character-set=utf8 default-collation = utf8_general_ciAbfrage mysql> > Persönliche Meinung: Für die Verwendung von Datenbanken ist utf8 – allgemein genau genug und hat im Vergleich zu utf8 – Unicode einen Geschwindigkeitsvorteil, sodass Sie es bedenkenlos verwenden können
附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视频教程栏目!
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen utf8_unicode_ci und utf8_general_ci in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!