对于具有utf8_general_ci collat​​ion和utf8 character-set-server

时间:2017-05-25 15:53:46

标签: mysql utf-8 character-encoding collation

在MySQL 5.5中,搜索结果对于带有utf8_general_ci collat​​ion和utf8 character-set-server的德语变音符号区分大小写。我的数据库表中有2个值表示öder和Öder。当我运行查询以使用搜索字符串时关键字'Öder',只检索Öder作为搜索结果,并且不检索以ö即'örder'开头的值。如果我在MySQL服务器的my.cnf文件中将字符集服务器更改为latin1并整理到latin1_general_ci(相同的字符集和校对更改为latin1我也为相应的数据库和表做了),它工作正常,即两个值都作为搜索结果检索。但是有一种方法可以使用utf8作为对德语变音符号进行不区分大小写的搜索character-set-server?面对这个问题的其他单词以及包含ü,Ü,ä,Ä等德语元音的开头。

1 个答案:

答案 0 :(得分:0)

使用mysql命令行工具测试:

mysql> SELECT 'Ö' = 'ö' COLLATE utf8_general_ci;
+-------------------------------------+
| 'Ö' = 'ö' COLLATE utf8_general_ci   |
+-------------------------------------+
|                                   1 |
+-------------------------------------+

1表示true; 0表示false

任何utf8_..._ci排序规则都会将一堆带重音/未重音的大写/小写字符视为相等。例如,utf8mb4_german2_ci表示它们相等:O=o=º=Ò=Ó=Ô=Õ=ò=ó=ô=õ并在oe=Ö=ö=Œ=œ之前排序。

Here是大多数字母代表大多数utf8排序规则的缩略图。

对于大多数用法,_general_ci不如_unicode_ci,它不如_unicode_520_ci,它将被MySQL 8.0中的Unicode 9.0标准取代。

我认为 german2 的目标是&#34;电话簿&#34;排序规则。但也许不是。在8.0中,utf8mb4_german2_ci整理D=d=Ď=ď < Dž=dz=dž < Ð=ð。但是utf8mb4_de_pb_0900_ai_ciD=d=Ð=ð=Ď=ď < Dž=dz=dž。更多详情here