【发布时间】:2011-08-23 23:21:32
【问题描述】:
我的一个客户有一个网站,该网站被托管公司强制在完整数据库上设置字符集完全搞砸了。我们之前在角色设置方面遇到过麻烦,但现在它只是一部直截了当的戏剧!
到目前为止,我已将 charset=utf-8 添加到页面内容类型,并将 mysql 连接的字符集设置为 utf8。现在是时候替换所有字符了。到目前为止,我发现的是:
ö = ö
ë = ë
é = é
数据库中的数据正在更新,如下所示:
UPDATE table SET `fieldname` = REPLACE(`fieldname`, 'ö', 'ö');
现在我只需要找到所有乱码的完整列表。我尝试使用 MySQL 查询搜索 field LIKE '%Ã%',但这会返回数据库中的所有记录。
Google 也只在其他人遇到问题的一些主题中显示几个字符(主要是上面的 3 个),但似乎没有我能找到的这些字符的完整列表(或至少是最常见的)用于查找和替换我的客户的所有数据。
如果有人可能知道这样的位置或能够完成我的列表,作为回报,我将创建一个包含这些字符的页面来帮助其他人(除非已经有一个列表,我当然不知道某个地方)。
//EDIT:
它适用于最常见的欧洲字符,例如 é è ë、á à ä、ö ó ò、ï、ü 以及 ringel-S(德语双 S)。对于像 ñ 或 ã 这样的跨越符号而言,不是那么多,但如果它们在某个列表中,那将不胜感激。
//EDIT 2:
我使用本文第一部分中的 2 个 ALTER 查询更新了 MySQL 数据库和表:http://developer.loftdigital.com/blog/php-utf-8-cheatsheet。到目前为止,我没有使用 mb_ 函数,也没有像看起来那样做任何 MB 配置。
文件中的标头都设置为 utf-8(我仍然需要检查一些 ajax 脚本的标头,但不确定是否需要这样做,但这样做不会有害)。并且文件都保存为没有BOM的UTF8。 PHPFreakMailer 也通过将字符集设置为 utf-8 来更新。
Bad enough,我仍然有这些奇怪的字符。我不认为他们会自己离开,但至少值得这样希望:-) 那么我应该采取的最后一步是什么?继续使用 REPLACE 查询并手动更改所有奇怪的字符?
提前致谢!
【问题讨论】:
-
为什么不强制表格和连接到您需要的字符集?并不是说这样做实际上会解决真正的问题......
标签: php utf-8 character-encoding special-characters