gpt4 book ai didi

mysql - 如何将 2 个不同的 unicode 字符视为与 php 和 mysql 相同

转载 作者:行者123 更新时间:2023-11-28 23:55:52 25 4
gpt4 key购买 nike

我想运行一个查询来搜索 mysql 数据库中的特定 VARCHAR 项目。由于我的项目是多语言的,所以我别无选择,只能使用 Unicode UTF8 作为该领域的字符集。

我遇到的问题如下:

This Char ی and this Char ى looks the same

However the unicode for above 2 is different (U+0649 & U+06CC)

我有很多数据,它们包含上述字符和更多字符的混合。

还有许多其他字符以类似的方式出现,我需要的是一种将一系列这些字符视为相同字符的方法,以便 mysql 在我运行查询时匹配它们。

我知道这可以通过在我的查询中使用 OR 并包括两个字符来完成,但是有没有其他方法,比如制作我自己的字符集/排序规则,我可以将两者定义为相同的,或者如果它们看起来相同,那么它们待遇一样吗?

最佳答案

您希望它们被平等对待吗?

D989       1609=x0649  [ى]   AL  ARABIC LETTER ALEF MAKSURA
DB8C 1740=x06CC [ی] AL ARABIC LETTER FARSI YEH

我检查了COLLATE utf8_unicode_ci;他们比较不平等:

mysql> SELECT CONVERT(UNHEX('D989') USING utf8) =
-> CONVERT(UNHEX('DB8C') USING utf8) COLLATE utf8_unicode_ci AS x;
+------+
| x |
+------+
| 0 |
+------+

我不认为 MySQL 会比较它们,除非您创建自定义排序规则。参见 http://dev.mysql.com/doc/refman/5.6/en/adding-collation.html .

在进行比较之前,您可以执行一组 REPLACE() 将 ى 更改为 open。但这会很麻烦而且很慢。

关于mysql - 如何将 2 个不同的 unicode 字符视为与 php 和 mysql 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com