У меня есть 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
но, CURLOPT_ENCODING
мне известно, данные о кодировании отправляются, а не извлекаются.
Работа с кодированием в каналах сложна . Сначала вы должны определить, какую кодировку использовать текст канала, а затем преобразовать его в любую кодировку, которую вы хотите отобразить.
Чтобы определить кодировку, у вас есть 2 взгляда в 2 разных местах:
Документация Feedparser наиболее подробно описывает, как с этим бороться. Вы также можете использовать такие сервисы, как Superfeedr, которые будут обрабатывать преобразование в UTF-8 для вас!