узнать или изменить кодировку страницы
От: ev.ga  
Дата: 09.02.11 08:18
Оценка:
можно ли в htmlayout получить/изменить значение charset мета-тега без навигации по dom?
Re: узнать или изменить кодировку страницы
От: c-smile Канада http://terrainformatica.com
Дата: 14.02.11 22:40
Оценка:
Здравствуйте, ev.ga, Вы писали:

EG>можно ли в htmlayout получить/изменить значение charset мета-тега без навигации по dom?


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

Внутреннее представление текста в DOM — UTF-16 (т.е. LPWCSTR).
И charset работает только на этапе parsing. После того как DOM построен — charset уже не используется. Ни на вход ни на выход (который всегда UTF-8).
Re[2]: узнать или изменить кодировку страницы
От: ev.ga  
Дата: 17.02.11 06:46
Оценка:
Здравствуйте, c-smile, Вы писали:

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


мне нужно сделать возможность выбора кодировки для отображения страницы
Re[3]: узнать или изменить кодировку страницы
От: Nikolaz Германия www.nikeware.com
Дата: 17.02.11 08:25
Оценка:
Здравствуйте, ev.ga, Вы писали:

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


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


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

На загрузку в Htmlayout отдается всегда UTF-16. Будь то путь к файлу или содержимое строкового буфера по указателю (LPWCSTR). Т.е. вам нужно самому предварительно что-то предпринимать, если файл или буфер с содержимым не соответствуют формату UTF-16. В случае с файлом скорее всего нужно предварительно самому анализировать его кодировку (через meta-тег, прописанный в файле или непосредственно анализом содержимого), конвертировать через промежуточный буфер в UTF-16 и уже потом "отдавать" все это в Htmlayout.
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 в таком случае.
Re[5]: узнать или изменить кодировку страницы
От: Nikolaz Германия www.nikeware.com
Дата: 20.02.11 22:16
Оценка:
Здравствуйте, c-smile, Вы писали:

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


Это означает, что я всегда отдаю в UTF-8. Просто описАлся в предыдущем посте. А про UTF-16 спасибо, будем знать. Искренне думал,что только UTF-8.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.