Редактировать: Хорошо, так что вы видите, что данные UTF-8 декодируются как Windows-1252 (поэтому числовые ссылки на символы были красной сельдью). Вот демонстрация на Python:
>>> u = ''.join(map(unichr, [1505, 1500, 1511, 1493, 1501]))
>>> s = u.encode('utf-8')
>>> print s.decode('cp1255', 'replace')
׳¡׳�׳§׳•׳�
Решение этой проблемы зависит от среды, в которой отображается вывод. Простой вывод полученных байтов и ожидание их интерпретации как символов приводит к таким проблемам.
HTML-документ обычно содержит тег заголовка, например <meta charset=utf-8>
, чтобы указать браузеру, какой должна быть его кодировка. Документ, обслуживаемый веб-сервером, содержит заголовок HTTP, например Content-Type: text/html; charset=utf-8
.
Вы должны попросить libcurl для заголовка Content-Type
HTTP узнать кодировку документа, а затем преобразовать его в системную кодировку с помощью iconv. Хотя в вашем случае это будет кодовая страница 1255, она зависит от системы пользователя, поэтому вы должны найти соответствующие функции, чтобы обнаружить это.
(Читать Юникод и наборы символов и тег с кодировкой символов на этом сайте для получения дополнительной информации.)