【问题标题】:Why is php/mysql converting this character?为什么 php/mysql 会转换这个字符?
【发布时间】:2012-10-07 17:11:35
【问题描述】:

我有一个包含 utf8_unicode_ci 字符串的数据库。一些例子是“Zìzhìqū”和“Shěng”。

当我运行这段代码时:

    $result = mysql_query ("SELECT foo FROM bar");

$rows = Array ();

while ($row = mysql_fetch_row ($result))
    array_push ($rows, $row [0]);

mysql_free_result ($result);

$rows 数组包含预期的“Zìzhìqū”,但“Shěng”已变为“Sh?ng”。当我将字符串写入文件时,我可以看到流氓问号是普通的 ASCII 0x3f。

WTF?

我正在使用 PHP 5.3.10-1ubuntu3.4 和 mysql Ver 14.14 Distrib 5.5.24。知道是什么原因造成的吗?

【问题讨论】:

标签: php mysql utf-8 character-encoding


【解决方案1】:

【讨论】:

  • 链接本身并不构成答案。
【解决方案2】:

您是否将 PHP 和 MySQL 之间的 连接 的字符编码设置为 UTF-8?不这样做会导致 ? 被替换为 UTF-8 字符。

SET NAMES 'utf8'

【讨论】:

    【解决方案3】:

    请将您的数据库保存在DEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci

    然后

    header("Content-type: text/html; charset=utf-8");
    //mysql connection
    mysql_query("SET NAMES utf8");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多