【发布时间】:2016-05-11 09:45:57
【问题描述】:
我有一个存储一些文本标签的表格。最初它是使用 latin_swedish_ci(默认)排序规则构建的。
现在我需要支持其他语言,例如俄语。我有两个使用这些标签的页面。一个显示它们很好,尽管该表仍然使用拉丁排序规则而不是 utf8_generic_ci,但是另一页仍然显示垃圾。当我查看源代码时,它看起来像这样:
\u00d0\u00a4\u00d0\u00b8\u00d0\u00bb\u00d1\u0152\u00d1\u201a\u00d1\u20ac\
两个页面都有:
<META http-equiv="Content-type" content="text/html;charset=UTF-8">
我错过了什么?
更新:
我不知道为什么以及它是如何工作的,但我最终在查询插入/更新之前以及在页面上呈现之前添加了以下内容,它解决了我的所有问题:
mysql_query("SET NAMES utf8");
如果您在尝试元标记和标头上浪费了足够多的时间,请试一试此解决方案。
【问题讨论】:
-
您需要将 PHP、HTML、数据库/表和连接对象的字符集设置为相同的内容,在您的情况下为 UTF-8。为避免字符损坏,everything 必须是相同的字符集。
-
哎呀,我认为您的演示链接 (usabilitest.com/uxXQAzq)(我不太懂俄语)显示正确。而且,如果我没记错的话,您遇到的情况应该同时支持葡萄牙语和俄语。在这种情况下,UTF-8 中的 Everything 是最好的。
-
顺便说一句,此链接可能会有所帮助:stackoverflow.com/questions/12756877/…
-
指令显示正确,因为我从不同的表中提取它们。关闭模式后,容器会将其置于 EN、PT 和 RU 中。我将表格转换为 utf8_general_ci,但仍然看到所有值都乱七八糟,如下所示:Ðто быÑтрый теÑÑ。我什至在我插入/更新数据库的 PHP 文件中添加了以下标头: header("Content-Type: text/html; charset=UTF-8");但无济于事......呃。