相关疑难解决方法(0)

UTF-8:一般?滨?Unicode的?

我试图找出我应该用于各种类型数据的排序规则.我将存储的100%内容是用户提交的.

我的理解是我应该使用UTF-8通用CI(Case-Insensitive)而不是UTF-8 Binary.但是,我无法找到UTF-8 General CI和UTF-8 Unicode CI之间的区别.

  1. 我应该将用户提交的内容存储在UTF-8 General或UTF-8 Unicode CI列中吗?
  2. UTF-8二进制适用于哪种类型的数据?

mysql collation utf-8

271
推荐指数
5
解决办法
16万
查看次数

使用二进制排序规则有什么影响?

在回答这个问题时,我对某些我无法找到足够答案的事情感到不确定.

使用二进制文件utf8_bin和不区分大小写的utf8_general_ci排序规则之间有什么实际区别?

我可以看到三个:

  1. 两者都有不同的排序顺序; _bin排序顺序可能会将任何变音符号放在字母表的末尾,因为字节值会被比较(对吗?)

  2. 只有区分大小写的搜索 _bin

  3. 没有A = Ä平等_bin

是否还有其他差异或副作用需要注意?

参考:

类似的问题没有解决这个问题:

mysql collation

45
推荐指数
2
解决办法
2万
查看次数

重新审视德语元音变音和 UTF8 排序规则

我确信这里很多人都知道,处理德语元音变音和 UTF8 排序规则至少可以说是有问题的。a = \xc3\xa4像, o = \xc3\xb6,之类的东西u = \xc3\xbc不仅能够影响结果的排序顺序,而且还能影响实际结果。这里有一个例子,清楚地展示了简单地尝试区分名词的单数和复数版本(Bademantel- 单数,Badem\xc3\xa4ntel- 复数)会如何出错。

\n\n
CREATE TABLE keywords (\n    id INT (11) PRIMARY KEY AUTO_INCREMENT,\n    keyword VARCHAR (255) NOT NULL\n) ENGINE = MyISAM DEFAULT CHARACTER\nSET = utf8 COLLATE = utf8_unicode_ci;\n\nINSERT INTO keywords (keyword) VALUES (\'Bademantel\'), (\'Badem\xc3\xa4ntel\');\n\nSELECT * FROM keywords WHERE keyword LIKE (\'%Badem\xc3\xa4ntel%\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果应该是

\n\n
+----+------------+\n| id | keyword    |\n+----+------------+\n|  1 | Badem\xc3\xa4ntel |\n+----+------------+\n
Run Code Online (Sandbox Code Playgroud)\n\n

utf8_unicode_ci输出是

\n\n
+----+------------+\n| id | …
Run Code Online (Sandbox Code Playgroud)

mysql collation diacritics

5
推荐指数
1
解决办法
3234
查看次数

标签 统计

collation ×3

mysql ×3

diacritics ×1

utf-8 ×1