【问题标题】:Bad characters when printing text from utf8_unicode_ci Mysql table从 utf8_unicode_ci Mysql 表打印文本时出现错误字符
【发布时间】:2012-03-14 14:07:45
【问题描述】:

我使用 mysql_query("SET NAMES 'utf8'"); 将文本插入/更新到 utf8_unicode_ci 编码表

它在 mysql 表中看起来像“ş,ğ,ü”。但是当我用 PHP 打印它时,

它看起来像“�??”在页面上。

我尝试添加

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 

但没用。

如何在页面上正确显示 unicode 字符?

谢谢

【问题讨论】:

  • 尝试在您的 PHP 代码中调用 header('Content-Type: text/html; charset=UTF-8');。您还可以检查您的浏览器是否确实将文档处理为 UTF-8?在 Chrome 中,您可以通过单击 Wrench Icon->Tools->Encoding 进行检查
  • 我检查了浏览器的编码是 UTF-8 并且我调用了 PHP 标头但没有工作:(
  • 在从 MySQL 获取数据之前,您是否也mysql_query("SET NAMES 'utf8'");,即SELECT * FROM ...
  • @Basti 是的,我是在 mysql 连接后添加的

标签: php mysql unicode utf-8


【解决方案1】:

你应该使用:

mysql_set_charset('utf8');

而不是

mysql_query("SET NAMES 'utf8'")

我也建议在 PHP 中设置标题

header('Content-Type: text/html; charset=UTF-8');

【讨论】:

    【解决方案2】:

    PHP 的 UTF-8 设置:

    ini_set("mbstring.language", "Neutral");
    ini_set("mbstring.internal_encoding", "UTF-8");
    ini_set("mbstring.encoding_translation", "On");
    ini_set("mbstring.http_input", "auto");
    ini_set("mbstring.http_output", "UTF-8");
    ini_set("mbstring.detect_order", "auto");
    ini_set("mbstring.substitute_character", "none");
    ini_set("default_charset", "UTF-8");
    ini_set("mbstring.func_overload", 7);
    
    setlocale(LC_TIME, "en_US.UTF-8");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 2020-03-23
      • 2012-10-18
      • 2015-05-18
      • 1970-01-01
      相关资源
      最近更新 更多