Ehs*_*san 6 mysql arabic diacritics
我无法使用阿拉伯语文本进行变音符号不敏感搜索。
我已经为相关表测试了多种设置:utf8 和 utf16 中的编码以及 utf8_general_ci、utf16_general_ci 和 utf16_unicode_ci 中的排序规则。
搜索适用于 åä 特殊字符。IE:
select * from test where text like '%a%'
Run Code Online (Sandbox Code Playgroud)
将返回文本为 a、å 或 ä 的列。但它不适用于阿拉伯语变音符号。即如果文本是?????? 我搜索???,我没有得到任何点击。
任何想法如何通过这个?
真正的用途稍后将是 PHP(一个搜索功能),但我直接在 MySQL 数据库中工作,只是为了在将其移植到 PHP 之前进行测试。
(来自评论)
CREATE TABLE test (
? id int(11) unsigned NOT NULL AUTO_INCREMENT,
? text text COLLATE utf8_unicode_ci,
? PRIMARY KEY (id)?
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Run Code Online (Sandbox Code Playgroud)
SHOW COLLATIONS;查看您有哪些可用的排序规则。在我的版本中,我没有看到任何看起来适合阿拉伯语的内容。然而,utf8_unicode_ci似乎可以做你想要的折叠。这是一个简单的尝试方法:
SELECT \'\xd8\xa8\xd9\x90\xd8\xb3\xd9\x92\xd9\x85\xd9\x90\' = \'\xd8\xa8\xd8\xb3\xd9\x85\' COLLATE utf8_unicode_ci;\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的结果是 1(真),这意味着它们被认为是相等的。结果utf8_general_ci返回0,意思是不等于。
然后将您的字段声明为VARCHAR(...) (or TEXT) CHARACTER SET utf8 COLLATE utf8_unicode_ci; 对于 utf8mb4 也是如此。
要构建您自己的排序规则(并提交它以包含在未来版本中),请参阅http://dev.mysql.com/doc/refman/5.6/en/adding-collat ion.html
\n| 归档时间: |
|
| 查看次数: |
1592 次 |
| 最近记录: |