我正在使用 cURL 抓取 RSS 提要列表,然后我正在使用 SimpleXML 读取和解析 RSS 数据。然后将排序后的数据插入到 mySQL 数据库中。
但是,作为http://dansays.co.uk/research/MNA/rss.php上的通知,我遇到了几个字符显示不正确的问题。
例子:
âGuitar Hero: Van Halenâ Trailer And Tracklist Available
NV 10/10/09 – Salt Lake City, UT 10/11/09 – Denver, CO 10/13/09 –
在将数据插入数据库之前,我曾尝试在数据上使用 htmlentities 和 htmlspecialchars,但这似乎无助于解决问题。
我怎么可能解决我遇到的这个问题?
感谢您的任何建议。
更新
我已经尝试了 Greg 的建议,但问题仍然存在......
这是我用来在 PDO 中执行 SET NAMES 的代码:
$dbh = new PDO($dbstring, $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->query('SET NAMES "utf8"');
在对 simplexml 数据进行排序并插入数据库之前,我对它进行了一些回显,现在我认为这与 cURL 有关...
这是我为 cURL 提供的内容:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
$data = curl_exec($ch);
curl_close($ch);
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA);
问题解决了
我必须将 RSS/HTML 页面中的内容字符集设置为“UTF-8”才能解决此问题。我想这不是一个真正的解决方案,因为原始数据中仍然存在字符问题。期待在 PHP6 中对它的适当支持!