【问题标题】:Problem with characters in MySQL -> Php -> HTMLMySQL -> Php -> HTML 中的字符问题
【发布时间】:2011-05-26 05:50:52
【问题描述】:

我的数据表中有一些文本包含以下字符:“•”

当我从 phpMyAdmin 查看文本时,它看起来还可以,这意味着正确的字符在数据中,但是如果我用 PHP 和echo 查询它,即使我使用htmlentities,它也会看起来就像 IE 中的一个奇怪的正方形和 Chrome 中的 �。

我对这两个字符有同样的问题:“和”

我做错了什么?

编辑:我刚刚尝试了 utf8_encode,至少丑陋的字符消失了,但这仍然不是我想要的。我的页面的char编码是utf8,和phpMyAdmin的页面编码一样。必须有一种方法可以正确显示它,因为 phpMyAdmin 做到了

【问题讨论】:

  • 它直接出现在 FF 中?还是其他浏览器?我可以将它保存到一个 php 变量并回显它。在 Chrome 中查看 - 有效。
  • 我在FF上得到问号
  • 哦,现在我明白你在说什么了。好的,我尝试了同样的方法,它也有效。所以现在我更困惑了。
  • 我真的认为问题出在 MySQL,因为如果我这样做,我可以正确地回显字符:echo "•";

标签: php mysql character-encoding


【解决方案1】:

我建议在连接到数据库后使用此查询:

mysqli_query($this->conn, 'SET NAMES \'utf8\'');

$this->conn 是您与数据库的连接。

更多关于SET NAMES 'utf8'的信息可以从MySQL Reference Manual Chapter 9.1.4获取

【讨论】:

  • 我应该在mysql_select_db之前还是之后这样做?
  • 我是在选择数据库后做的。
  • 我认为您的代码适用于 MySQL lite 之类的。我试过mysql_query('SET NAMES \'utf8\'');,但看起来更乱。
  • mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'")
  • 在 Firefox 中打开页面信息(右键单击页面 -> 页面信息)并将出现的窗口的屏幕截图添加到您的问题中。我的数据库是我们的生产数据库,一个完全成熟的最新 MySQL
【解决方案2】:

这是编码问题,您的页面编码可能与数据库编码不同。要么将数据库和页面都设置为相同的编码,要么使用函数,例如 utf8_encode($variable) 或 utf8_decode

编辑: 尝试在 htaccess 中添加 AddDefaultCharset UTF-8

【讨论】:

  • 我刚刚尝试了 utf8_encode,至少丑陋的字符消失了,但仍然不是我想要的。我的页面的char编码是utf8,和phpMyAdmin一样。必须有一种方法可以正确显示它,因为 phpMyAdmin 做到了。
  • 你确定你的页面是 utf8 吗?,去浏览器然后检查编码看看你的页面上选择了什么。有时服务器的设置会忽略您在 html 中为编码设置的内容。除了数据库和表和字段的编码是什么之外。确保它们都是 utf8。
  • 好的,我刚刚在 Fiddler 中看到了。我的页面是“Content-Type: text/html”,但 phpMyAdmin 是“Content-Type: text/html; charset=utf-8”。想知道这是否是问题所在。你能从 PHP 代码中改变它吗?
  • 试试在 htaccess 中添加 AddDefaultCharset UTF-8 怎么样?看看它是否适合你。
  • @jsoldi:尝试将<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> 添加到您页面的<head></head> 部分
【解决方案3】:

什么是 MySQL 中的数据编码? PHP 还不支持原始 unicode。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多