Кодировка: некоторые символы возвращаются обратно через запрос cURL?

У меня есть 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 разных местах:

  • Заголовки HTTP
  • Объявление XML

Документация Feedparser наиболее подробно описывает, как с этим бороться. Вы также можете использовать такие сервисы, как Superfeedr, которые будут обрабатывать преобразование в UTF-8 для вас!