MySQL Replace()函数不为非拉丁字符提供正确的输出

时间:2012-08-18 22:41:01

标签: mysql character-encoding replace

在MySQL文档中,字符串函数REPLACE()被称为“多字节安全”。我在使用俄罗斯字符集时遇到了问题。

    SELECT REPLACE('оофо', 'о', '*'); -- "**ф*", everything is correct
    SELECT REPLACE('оофоо', 'о', '*'); -- "**фоо", NOT CORRECT

我应该在哪里寻找问题的根源?

其他信息:

OS - Windows 7 (Russian),
SELECT CHARSET('оофоо'); -- "utf8",
SELECT LENGTH('оофоо'); -- "6".

1 个答案:

答案 0 :(得分:1)

  1. 确保数据库字符集/ coallition为UTF-8

  2. 在页面上插入这些俄语字符(表单,textarea     ),通过设置Content-Type to text/html; charset=utf-8,确保编码为UTF-8。直接在表单中输入俄语文本     输入

  3. 在处理此表单的处理页面上,将其插入     数据库,请务必执行SET NAMES utf8,以便将其存储为UTF-8     之前您预先在单独的查询中插入数据。

  4. 在视图中渲染数据库中的内容时,请确保     Content-Type is text/html; charset=utf-8

  5. 确保内容类型 windows-1251或     ISO-8859-1 / latin1的。确保数据库charset / coallition不是     ISO-8859-1 / Latin1的。


  6. 有关详细信息,请参阅:Fixing encodings