mysql替换重音字符

时间:2010-05-02 12:18:59

标签: mysql utf-8 character-encoding

我想从用户的名字和姓氏中生成严格的字母数字字符登录。由于他们中的许多人都是外国人,他们的名字有特殊字符(é,è,ï,...)。我想删除登录中的重音符号(e,e,i,...)。

这是我的查询。是否有不包含重音的字符集?

UPDATE contacts SET login=CONVERT(LOWER(CONCAT(firstname,'.',lastname)) USING utf8);

2 个答案:

答案 0 :(得分:5)

那么,作为一名法国计算机科学家(以他的名字加上口音),我强烈反对这种转变。

为什么,因为这个策略只是用另一个错误的假设取代错误的假设。让我解释一下自己:

我们可以看到只有us-ascii在登录ID中被允许作为一个错误的假设,“所有用户名都可以在ascii中”。

尝试从用户名称中删除重音仅仅是将所有用户名转换替换为ascii“。

这也是不正确的:它对我有用(作为欧洲 - 拉丁语1证明的人),但你如何计算三岛的名字?或者是Сахаров?

我知道我的回答是非技术性的,但你应该做任何必要的事情来允许登录中的非ascii字符。或者,您应该允许您的用户选择此登录。

答案 1 :(得分:4)

以下是我的重音标记规范化解决方案:

REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(  
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(  
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(  
acc_tag,
'ù','u'),'ú','u'),'û','u'),'ü','u'),'ý','y'),'ë','e'),'à','a'),'á','a'),'â','a'),'ã','a'), 
'ä','a'),'å','a'),'æ','a'),'ç','c'),'è','e'),'é','e'),'ê','e'),'ë','e'),'ì','i'),'í','i'), 
'î','i'),'ï','i'),'ð','o'),'ñ','n'),'ò','o'),'ó','o'),'ô','o'),'õ','o'),'ö','o'),'ø','o') AS normal_tag