德语的最佳MySQL排序规则是什么

lh80um4z  于 2023-05-05  发布在  Mysql
关注(0)|答案(5)|浏览(151)

我正在建立一个德语网站,所以我会使用像ä, ü, ß等字符,那么你的建议是什么?

kx5bkwkv

kx5bkwkv1#

这个答案已经过时了。有关完整的emoji支持,请参阅this answer
作为字符集,如果可以的话,绝对是UTF-8。
作为排序规则--这对于具有特殊字符的语言来说有点麻烦。有各种类型的排序规则。它们都可以存储所有变音和其他字符,但它们在比较中如何处理变音方面有所不同,即是否

u = ü

是真是假;以及排序(其中在字母表中变音位于排序顺序中)。
长话短说,你最好的选择是

utf8_unicode_ci

它允许不区分大小写的搜索;它将ß视为ss,并使用DIN-1排序。可悲的是,像所有非二进制Unicode排序规则一样,它处理u = ü,这是一个可怕的麻烦,因为搜索“Muller”也会返回“Müller”。你必须通过真实的设置一个识别变音的校对来解决这个问题。
或**utf8_bin**
这种排序规则没有u = ü问题,但只能进行区分大小写的搜索。
我不完全确定使用二进制排序规则是否有其他副作用;我问了一个关于here的问题。
This mySQL manual page很好地概述了各种排序规则以及它们在日常使用中带来的后果。
Here是mySQL中可用排序规则的概述。

9rnv2umw

9rnv2umw2#

要支持完整的UTF-8标准,必须在MySQL中使用字符集utf8mb4和排序规则utf8mb4_unicode_ci

**注意:**MySQL的utf8 charset只支持1- 3字节字符!这就是为什么现代的表情符号不受支持,因为它们使用4字节!

完全支持UTF-8标准的唯一方法是将所有数据库本身的字符集和排序规则更改为utf8mb4utf8mb4_unicode_ci。另外,数据库连接也需要使用utf8 mb 4。
mysql服务器必须使用utf8 mb 4作为默认字符集,可以在/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语句将现有表迁移到utf8 mb 4:

ALTER TABLE <table-name> CONVERT TO 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

注意事项:

  • 为了确保表列之间的任何联接不会被字符集编码减慢,所有表都必须更改!
  • 由于MySQL中索引的长度是有限的,因此每个索引行的字符总数必须乘以4字节,并且必须小于3072

启用innodb_large_prefix配置选项后,对于使用DYNAMIC和COMPRESSED行格式的InnoDB表,此长度限制将提高到3072字节。
要更改数据库的字符集和默认排序规则,请运行以下命令:

ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

由于utf8 mb 4与utf8完全向后兼容,因此不会发生乱码或其他形式的数据丢失。

ua4mk5z4

ua4mk5z43#

utf-8-general-ciutf-8-unicode-ci
要知道区别:UTF-8: General? Bin? Unicode?

sdnqo3pr

sdnqo3pr4#

上面的评论并没有真正解决德语元音变音的具体问题,这通常被描述为:字典顺序还是电话簿顺序?Unicode默认值对于前者是可以的,但如果(例如)你想要'Ü' = 'UE',那么你可以考虑utf8mb4_de_pb_0900_ai_ci或utf8mb4_german2_ci,假设字符集是utf8mb4。

jtoj6r0c

jtoj6r0c5#

一件重要的事情,因为这是关于德语的。使用utf8mb4_unicode_ci,字母uü是相同的。如果你有一个唯一的索引(例如对于用户名),则“blume”和“blüme”将不起作用,因为它们对于utf8mb4_unicode_ci是相同的单词(* 重复键错误 *)。要解决此问题,可以使用utf8mb4_german2_ci

相关问题