当前位置:  开发笔记 > 编程语言 > 正文

RSS Feed中的utf-8和htmlentities

如何解决《RSSFeed中的utf-8和htmlentities》经验,为你挑选了3个好方法。

我正在用PHP编写一些RSS提要并且在处理字符编码问题.我应该在htmlentities()编码之前或之后使用utf8_encode()吗?例如,我在描述元素中有两个&符号和中文字符,我不确定哪个是正确的:

$output = utf8_encode(htmlentities($source)); or
$output = htmlentities(utf8_encode($source));

为什么?



1> Eran Galperi..:

将字符集传递给htmlentities函数非常重要,因为默认值为ISO-8859-1:

utf8_encode(htmlentities($source,ENT_COMPAT,'utf-8'));

您应首先应用htmlentities以允许utf8_encode正确编码实体.

(编辑:我之前的意见改变了,根据评论,订单无关紧要.这段代码经过测试并且效果很好).



2> Gumbo..:

第一:该utf8_encode功能从ISO 8859-1转换为UTF-8.因此,如果输入编码/字符集是ISO 8859-1,则只需要此功能.但是你为什么不首先使用UTF-8?

第二:你不需要htmlentities.您只需要htmlspecialchars通过字符引用替换特殊字符.htmlentities将替换可以使用UTF-8直接编码的"太多"字符.重要的是,您也可以使用ENT_QUOTES引用样式替换单引号.

所以我的提议:

// if your input encoding is ISO 8859-1
htmlspecialchars(utf8_encode($string), ENT_QUOTES)

// if your input encoding is UTF-8
htmlspecialchars($string, ENT_QUOTES, 'UTF-8')



3> Kornel..:

不要用htmlentities()!

只需使用UTF-8字符.只需确保在HTTP标头(Content-Type:application/xml;charset=UTF-8)中声明Feed的编码或在第一行使用Feed本身时失败.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有