Re[4]: узнать или изменить кодировку страницы
От: c-smile Канада http://terrainformatica.com
Дата: 18.02.11 06:51
Оценка:
Здравствуйте, Nikolaz, Вы писали:

N>Здравствуйте, ev.ga, Вы писали:


EG>>Здравствуйте, c-smile, Вы писали:


CS>>>А какой результат этого мероприятия ожидается?


EG>>мне нужно сделать возможность выбора кодировки для отображения страницы


N>На загрузку в Htmlayout отдается всегда UTF-16.


Чтобы я еще понял что это означает...

HTMLayoutLoadHtml принимает на вход LPCBYTE.
Это может быть и UTF-16 но лучше что бы было UTF-8 c BOM в начале. В этом сдучае парсинг и определение кодировки самые быстрые.

В случае с UTF-16 я сначала перевожу весь текст в UTF-8 и запускаю парсер в этом виде.

Если я вижу что кодировка не UTF-16, т.е. использует single byte code unit, то парсится как и utf-8. Если встречается meta/charset то он переключяет encoder входного потока.

Т.е. UTF-16 для html на самом деле самая неудачная кодировка и для HTML и для XML — markup то весь есть ASCII последовательности.

N>На загрузку в Htmlayout отдается всегда UTF-16. Будь то путь к файлу или содержимое строкового буфера по указателю (LPWCSTR). Т.е. вам нужно самому предварительно что-то предпринимать, если файл или буфер с содержимым не соответствуют формату UTF-16. В случае с файлом скорее всего нужно предварительно самому анализировать его кодировку (через meta-тег, прописанный в файле или непосредственно анализом содержимого), конвертировать через промежуточный буфер в UTF-16 и уже потом "отдавать" все это в Htmlayout.


charset находится простым strstr. Меняем значение, склеиваем строку и отдаем мне в таком виде. Но только не UTF-16 в таком случае.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.