2010-10-19 3 views
0

Я использую libcurl для получения HTML-страниц.HTML-декодирование в C/C++

У меня есть проблемы с символами иврита.

например: סלקום получает тарабарщину.

Как получить символы на иврите, а не тарабарщину?

Нужен ли мне какой-нибудь HTML-декодер?

Поддерживает ли libcurl такую ​​операцию?

Поддерживает ли libiconv такую ​​операцию?

Я ценю любую помощь.

Благодаря

+0

Какую систему вы используете что? Есть ли у вас поддержка еврейских персонажей? –

ответ

1

Edit: Ok, так что вы видите, это 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 для заголовка HTTP Content-Type, чтобы узнать кодировку документа, а затем преобразовать его в системную кодировку с помощью iconv. Хотя в вашем случае это будет кодовая страница 1255, это зависит от системы пользователя и поэтому вы должны найти соответствующие функции, чтобы обнаружить это.

(Прочитано Unicode and Character Sets и character-encoding метки на этом сайте, для богатства дополнительной информации.)

+0

Я получаю персонажей вроде: '?'?'§ '?'? Мне нужно работать над этими персонажами. – embedded

+0

И персонажи вроде: '₪'¨'~''¨ – embedded

+0

@embedded Aha! Это именно то, что мне нужно. –