我正在建设一个德语网站,所以我将使用ä, ü, ß
等字符,那么您的建议是什么?什么是德语的最佳MySQL排序规则
回答
作为字符集,如果可以的话,肯定是UTF-8。
作为整理 - 这对于有特殊字符的语言有点讨厌。有各种类型的排序规则。他们都可以储存所有的变音符号和其他字符,但他们在不同的他们如何对待比较变音,即
u = ü
是真还是假的;和排序(在排序顺序中,变音符号位于字母表中)。
要长话短说,你最好的选择是要么
utf8_unicode_ci
它允许不区分大小写搜索;它将ß
视为ss
,并使用DIN-1分类。可悲的是,像所有非二进制Unicode排序规则一样,它会将u = ü
视为可怕的麻烦,因为搜索“Muller”也会返回“Müller”。您将不得不通过实时设置变音识别归类来解决此问题。
或utf8_bin
此归类不具有u = ü
问题,但只有大小写敏感的搜索是可能的。
我不完全确定是否有任何其他副作用使用二进制排序;我问了一个关于here的问题。
This mySQL manual page给出了不同的排序规则,他们在日常使用带来的后果很好的概述。
Here是关于mySQL中可用排序规则的一般概述。
utf-8-general-ci
或utf-8-unicode-ci
。
要知道其中的差别: UTF-8: General? Bin? Unicode?
我想你的意思是'utf8_general_ci'或'utf8_unicode_ci'。 – 2016-09-20 10:51:46
要支持完整的UTF-8标准您必须在MySQL中使用字符集utf8mb4
和排序utf8mb4_unicode_ci
!
注意:当使用所谓的utf8
字符集时,MySQL只支持1到3个字节的字符!这就是为什么现代Emojis不支持,因为他们使用4字节!
完全支持UTF-8标准的唯一方法是改变所有表的字符集和校对和数据库本身utf8mb4
和utf8mb4_unicode_ci
的。此外,数据库连接也需要使用utf8mb4。
MySQL服务器必须使用utf8mb4作为可以/etc/mysql/conf.d/mysql.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
# character-set-client-handshake = FALSE ## better not set this!
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
现有表中手动配置默认字符集可以迁移使用以下SQL语句来utf8mb4 :
ALTER TABLE <table-name> CONVERT TO
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
注:
- 要确保表colums不会之间的任何联接通过字符集编码减慢所有表必须改变!
- 作为索引的长度在MySQL被限制,每个索引行的字符的总数目必须由4字节相乘,并需要为小于3072
当innodb_large_prefix配置选项是对于使用 DYNAMIC和COMPRESSED行格式的InnoDB表,此 长度限制将上升为3072个字节。
要更改数据库的字符集和默认排序规则,运行以下命令:
ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
由于utf8mb4是UTF8完全向后兼容,不应发生变为乱码或其他形式的数据丢失。
- 1. 什么排序规则是MySQL中数据类型INT的最佳选择?
- 2. 蒙古语言的MySQL连接排序规则是什么?
- 3. 在Informix IDS中设置排序规则的最佳方式是什么?
- 4. 多语言数据库的最佳默认排序规则
- 5. MySQL中的排序规则
- 6. 排序部分排序列表的最佳方法是什么?
- 7. 组织CSS规则的最佳方式是什么?
- 8. 排序规则在MySQL
- 9. 为什么MySQL的默认排序规则latin1_swedish_ci?
- 10. 什么是语法规则(解析中)?
- 11. if语句的最佳安排是什么?
- 12. 在mysql中utf8_bin与utf8_general_ci排序规则有什么关系?
- 13. 什么是mysql的最佳布尔值?
- 14. 什么是MySQL的最佳varchar大小?
- 15. 降序排序的最佳方式是什么?
- 16. 什么是MySQL 4.0.20数据库/表/列/字符串的排序规则?
- 17. 什么是字符向量的R排序规则?
- 18. 什么是使用JSON和一些特殊字符时的最佳排序规则
- 19. mysql检查表的排序规则
- 20. 混淆了mysql中的排序规则
- 21. MySQL的排序规则在文档
- 22. 发现MySQL列的排序规则
- 23. MySQL的INSTR和排序规则
- 24. MySQL的Rails迁移排序规则
- 25. 科德的“非颠覆规则”是什么意思?
- 26. 用PhP和MySQL对列进行排序的最佳方法是什么?
- 27. MYSQL排序奥德
- 28. MySQL索引 - 什么是最佳实践?
- 29. 在PowerShell的语法,什么是该`lvalueExpression`规则在说什么?
- 30. 在XmlDocument中排序节点的最佳方法是什么? (.Net)
我知道这是超旧的,但是...我正在尝试应用类似于上面所述的utf8排序规则。但是,使用utf8_unicode_ci时,字符'é'编码为'?'。你知道这是为什么吗?我认为utf8有每个角色的代表。 – wright8191 2014-08-06 19:23:35
@Pekka,由于'utf8'是有缺陷的(不是真正的unicode),你为什么推荐它通过'utf8mb4'? – Pacerier 2014-10-18 22:13:47