PHP - 字符编码问题 - 必须缺少某些东西

时间:2012-08-18 10:59:00

标签: php encoding utf-8

在我的PHP页面中,产品说明出现了臭名昭着的问题。

啊哈!我想 - 我必须记得将整个网站移到UTF-8。所以我:

  • mysql_set_charset('utf8');array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")命令中指定。我正在将网站迁移到PDO - 所以仍处于过渡阶段。保存和读取产品描述的网站的实际部分都使用新的PDO方法。
  • 在header.php页面的开头指定ini_set('default_charset', 'utf-8');
  • HTML页面的head标记中指定的<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />。我通过检查它是否出现来验证没有缓存问题。
  • 将产品表的排序规则更改为utf8_general_ci

但错误仍然存​​在。它甚至出现在新产品上,当我编辑产品以删除并重新添加英镑符号时。有什么我想念的吗?

2 个答案:

答案 0 :(得分:2)

我发现了问题。当我将它们回显到浏览器时,我正在将htmlentities()扔到字符串上以确保安全性。我应该抛出:

htmlentities($string, ENT_COMPAT | ENT_HTML401, "UTF-8");要纠正这个问题。

答案 1 :(得分:0)

还有2件事

  • 设置header("Content-Type: text/html; charset=utf-8");
  • 确保您的文件编码为UTF-8(例如:用记事本打开文件并将其保存为UTF-8编码)