“正在展示而不是 -

时间:2013-04-04 10:49:22

标签: php character-encoding non-ascii-characters

在php页面中显示

’而不是-

我尝试使用不同的编码类型,如:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

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

但结果是一样的。可能是什么问题呢?

输入

  

<strong style="color:#A8A8A8;">1</strong> - Lorem Ipsum。

结果

  

1 - Lorem Ipsum。

5 个答案:

答案 0 :(得分:4)

确保您的html标头指定utf8

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

这通常对我有用(显然如果内容是utf8)。

如果设置了content-type,则无需转换为html实体。


检查http://php.net/manual/en/function.mb-convert-encoding.php

<?php
     header('Content-Type: text/html; charset=utf-8');
     mb_internal_encoding('utf-8');
?>

可能会对你有帮助。

答案 1 :(得分:2)

看起来您的源数据在此过程中从一个编码转换为另一个编码。尝试确保所有步骤具有相同的编码。

  1. 您的(MySQL?)数据是否存储为UTF8?
  2. 您的.php文件是否保存为UTF8?
  3. 当将UTF8数据作为ISO-8859-1数据处理时,通常会弹出这样的转换错误。 (多字节与单字节?不确定)。

答案 2 :(得分:2)

元标记不会改变输出的事实是一个强有力的指标,表明它有一些重叠;可能它是HTTP标头中指定的字符集(优先于元标记),你确定你没有在那里设置吗?

答案 3 :(得分:1)

您的文档很可能以UTF-8编码,因为–是UTF-8编码字符的iso-8859-1演示文稿。

您需要的是您描述的元标记:

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

由于它不起作用,标签可能会被忽略。建议使用浏览器并检查它尝试使用的编码(工具 - Chrome中的编码)。

  • 如果浏览器使用UTF-8,则您对字符进行了双重编码。如果您没有过多utf8_encode(...)
  • ,请检查您的代码
  • 如果浏览器使用Latin1(iso-8859-1),则HTTP标头会忽略或覆盖您的标记。尝试使用在线验证器验证您的HTML。使用浏览器的开发工具检查发送的标头信息,以确保iso-8859-1未设置为编码。

答案 4 :(得分:0)

从javacode创建文件并将编码设置为UTF-16时遇到同样的问题就行了。