在HTML / PHP中奇怪地呈现字符

时间:2015-08-12 08:27:52

标签: php html special-characters

我正在使用PHP函数的这一部分呈现RSS提要:

echo "<li><a target='_blank' href='$item_link'>$item_title</a></li>";

使用示例,在HTML

中输出以下内容
<li>
    <a target='_blank' href='http://www.internationalaccountingbulletin.com/news/ey-shinnihon-will-audit-toshibas-corrected-accounts-while-under-investigation-4639900'>
        EY ShinNihon will audit Toshiba’s corrected accounts… while under investigation
    </a>
</li>

当涉及到使用的符号时,标题存在很大的差异。

输出此

  

EY ShinNihon将在调查期间审核东芝的更正帐户

作为

  

EY ShinNihon将在调查期间审核东芝的更正帐户

带有撇号和椭圆(以及其他)的

是以â€为前缀的各种符号。

如何将这些符号转换回PHP

中的原件

3 个答案:

答案 0 :(得分:1)

选择符合您编辑内容的字符编码,请查看此网站以了解详情。 http://htmlpurifier.org/docs/enduser-utf8.html

答案 1 :(得分:1)

  

我拿出了charset meta标签,因为我明白这对速度/ SEO来说是不好的做法。重新安装时,问题得到纠正,谢谢。但是,有没有更好的做法?通过PHP设置标题 - 这是令人难以忍受的还是更糟?

所以你的问题是你在某种编码中输出文本,而没有通知浏览器你给它的编码,因此浏览器错误解释了错误编码的文本,导致垃圾字符。您始终需要告知客户您要向其发送文本的编码。通过HTTP执行此操作的主要方法是HTTP Content-Type标头。这样,浏览器就会在实际接收内容之前获知其收到的内容类型。这完全是应该的。

HTML <meta>代码只是后备。您应该包含它们,因为它们有助于指定HTML文档的编码,如果它在HTTP上下文之外使用(例如,您只是从硬盘打开它,不涉及HTTP,没有HTTP { {1}}标头,无法指定编码...除了HTML Content-Type标记之外)。但同样,它应该只是一个后备。搜索引擎优化或速度绝对没有问题;无论你从哪里得到它,它都是纯粹的FUD。

答案 2 :(得分:0)

这对你有用。 首先只使用mb_convert_encoding()函数,它会为你做好准备。

 $item_title = addslashes('this is your text');

 $item_title = mb_convert_encoding($item_title, "HTML-ENTITIES", 'UTF-8');