Здравствуйте, 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 в таком случае.