【问题标题】:MySQL collation and PHP charset conflictMySQL排序规则和PHP字符集冲突
【发布时间】:2011-08-21 13:31:45
【问题描述】:

我有一堆从 latin-1 MySQL 数据库中提取的丹麦文本,在 PHP 中回显时可以正确显示。当我需要回显其他一些不是从数据库中获取的丹麦语字符时,问题就开始了。

我所做的实际上是输出标题

Content-Type: text/html; charset=iso-8859-1

也让未查询的字符也能正确显示。

问题是,当我这样做时,查询的字符显示不正确。

【问题讨论】:

  • 你应该改用 utf-8

标签: php mysql character-encoding collation


【解决方案1】:

仅仅因为数据存储在 latin-1 整理表中并不意味着它是 latin-1 编码的。这是由于连接SET NAMES设置与排序规则相同时MySQL没有进行任何字符转换。

我怀疑您在 latin1 数据库中存储了一些 UTF8 字符,这使问题变得混乱。

如需更多帮助,请添加以下详细信息:

  • 您设置的 MySQL 连接编码
  • “未查询”字符来自何处的详细信息

【讨论】:

【解决方案2】:

使用 unicode。 UTF-8 => 正确的方式。

所以,在数据库中设置 utf8_unicode_ci,UTF-8 作为页面字符集,在查询之前设置 mysql_query("SET NAMES UTF8");

【讨论】:

    猜你喜欢
    • 2012-10-26
    • 2011-04-17
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 2010-10-07
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多