我有一个PHP驱动的RSS提要缓存系统。如果提要包含某些字符,例如大引号/撇号,则这些字符会在破坏的cURL响应中返回。
示例提要:http://www.theguardian.com/football/hullcity/rss(注意卷曲撇号)
cURL代码:
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => CURL_CONNECT_TIMEOUT
));
结果数据(摘录自):
Sergio Agüero is firing again, José Mourinho’s propaganda ...
我是否应该配置一些cURL选项,或者我别无选择,只能在cURL完成后字符串处理这些选项?
我知道有一个cURL选项CURLOPT_ENCODING
,但据我所知,这是关于编码发送的数据,而不是检索的数据。
处理提要中的编码很难。您必须首先确定提要的文本使用哪种编码,然后将其转换为要显示的任何编码。
要确定编码,您需要在两个不同的地方进行两次查找:
- HTTP标头
- XML声明
Feedparser的文档是关于如何处理这一问题的最明确的文档。你也可以使用像Superfeeder这样的服务,它将为你处理UTF-8的转换!