Mysql将所有特殊的unicode字符替换为ascii对应字符
我有一个编码为Mysql将所有特殊的unicode字符替换为ascii对应字符,mysql,utf-8,replace,non-ascii-characters,Mysql,Utf 8,Replace,Non Ascii Characters,我有一个编码为utf8 general ci的字段,其中许多值包含非ascii字符。我想 搜索包含任何非ascii字符的所有字段 用相应的ascii版本替换所有非ascii字符 例如:科特迪瓦应该被科特迪瓦取代,圣多美应该被圣多美取代 我如何做到这一点?如果我只是将字段类型更改为ascii,非ascii字符将替换为“?”。我甚至无法使用 RLIKE '%[^a-z]%' 比如说 SELECT columname FROM tablename WHERE NOT columname REGE
utf8 general ci
的字段,其中许多值包含非ascii字符。我想
RLIKE '%[^a-z]%'
比如说
SELECT columname
FROM tablename
WHERE NOT columname REGEXP '[a-z]';
返回一个空集
谢谢在 要选择的查询是
select * from test where maintext rlike '[^\x00-\x7F]'
希望这有帮助我从您之前的问题中推测您正在使用PHP 然后,您可以使用的应答返回您希望使用的对象,然后使用unidecode尝试将对象转换为ascii等价物。在Perl中,您可以使用 在MySQL中,要将utf8(或utf8mb4)转换为ascii,必须使用一些难看的“?”字符作为替换,这不是一个简单的函数。最好在将它们插入数据库之前替换它们,或者在Perl(或其他)中运行一些东西来提取数据并一次更新一行
文本::Unidecode有许多不同的端口,使用不同的语言:,,,。您所说的“非ascii字符”是什么意思?值是否在utf8中正确编码,或者您是否遇到编码问题?请记住,“ô”不是“ASCII”。US-ASCII是仅包含英文字母的7位范围。您的“科特迪瓦”示例=>“科特迪瓦”,因为1。“ô”不是ASCII,2。单引号字符没有问题。谢谢,这很有帮助,虽然自动转换有点复杂,我想(自定义功能?),这将帮助我暂时。可能有助于实际删除我不认为OP希望删除实际的非ascii字符,而是将其替换为ascii等效字符。因此可能更具相对性。也就是说,我们不能假定OP使用的是python或django。如果他们使用的是python,那么就可以完美地工作。鉴于他们的大多数问题都是基于PHP的,我怀疑他们是否会使用python。