【发布时间】:2013-02-20 09:43:15
【问题描述】:
我想在我的数据库中搜索通常包含许多特殊字符的波兰城市。我想将这些迁移到 ASCII,这样即使没有波兰语键盘的人也可以进行常规搜索。
在 PHP 中看起来像
$ascii = iconv("UTF-8", "ASCII//TRANSLIT//IGNORE", $text);
但是如何在 mysql select 查询中实现呢?
select * from city where CONVERT(city using ASCII)=CONVERT(? using ASCII)
不起作用,因为它将所有未知字符替换为问号
select CONVERT('Lódź' using ascii );
-- RESULT: L?d?
【问题讨论】:
-
除了这种转换是猜测之外,是否为最终用户提供虚拟键盘?
-
mh 当然可以,但是这个搜索是在 API 端,它将被移动应用程序使用。除此之外,允许两个字符或多或少被认为是用户友好的
-
当然我可以使用 str_replace gist.github.com/mlaug/030889328263b5144b72 但也许有更易读和更自信的方式
-
您使用什么字符集和排序规则来存储城市名称?
标签: mysql character-encoding ascii iconv transliteration