【问题标题】:UTF8 mysql encoded database, but not showing special characters in PHPUTF8 mysql 编码数据库,但在 PHP 中不显示特殊字符
【发布时间】:2013-10-17 09:15:18
【问题描述】:

我在 MySQL 中有一个使用utf_general_ci 编码的数据库,当我在 Navicat 或 PhpMyAdmin 中插入数据并在那里进行查询时,特殊字符返回正常。

但在 php 变量中,它们显示如下:

我的数据库和排序规则:

如果是正常的,在我的 html 文档中

显示字符正常,只有当是 php 变量时才不起作用

请帮帮我

【问题讨论】:

  • 向我们展示如何获取这些行以及如何使用 php 变量?我猜你没有做过"SET NAMES UTF8"charset=UTF-8
  • 您需要始终使用相同的编码,包括 html 页面本身。
  • 如果我设置名称 utf8 它可以工作,但我以前从未这样做过并且正在工作..
  • <?php echo $usuario['usu_apellido2']; ?> 我在哪里打印它和$rows = array(); $res = mysql_query('SELECT * FROM usuario u, rol r WHERE u.rol_id=r.rol_id'); while ($row = mysql_fetch_array($res)) { $rows[] = $row; } return $rows; @JasonOOO

标签: php html mysql utf


【解决方案1】:

试试:

$variable = utf8_encode($valueCommingFromDB);

【讨论】:

  • 谢谢,这行得通,但我不想在我将要打印的每个变量上都这样做 =(
【解决方案2】:

需要注意的是,mysql中的utf8是相当有限的,尤其是utf8_general_ci。您可能想切换到 utf8_unicode_ci 或 utf8mb4

What's the difference between utf8_general_ci and utf8_unicode_ci

http://mathiasbynens.be/notes/mysql-utf8mb4

【讨论】:

    【解决方案3】:

    嘿,

    首先要确保你的 html 标签中有这个元数据

    <meta charset="UTF-8">
    

    你也可以在 php 中检查这一行,在你的 mysql 提取上面

    header('Content-type: text/html; charset=utf-8');
    

    如果您将特殊字符存储在数据库中作为 html 代码,例如 &amp;#39;,当您提取时尝试使用此 php 函数,即 '

    htmlspecialchars_decode($your_text_from_db);
    

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 2016-10-08
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2016-02-03
      • 2013-11-11
      相关资源
      最近更新 更多