Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > какая кодировка у тегов?


Автор: victor79 27.4.2014, 16:58
про теги Content-Type: charset и meta charsert это понятно. Интересует следующая схема. Content-Type не задан. Значит нужно взять из meta charset, но какой кодировкой парсить HTML еще до распарсивания этого тега? В ISO 8859-1? Т.е. до тега кодировки делать дефаултную, а после стопорнуть iconv и указать ему другую таблицу?

Я делаю парсер, что-то вроде yacc, которым будет парситься разная фигня, преимущественно не HTML, но меня интересует универсальность. Весь входящий текст проходит через перекодировщик, что бы соответствовать кодировке программы. Так же интересно, как задавать кодировку самой моей программы в теле самой программы.

Автор: ksnk 27.4.2014, 17:29
victor79, есть такая фенечка, как c http://ru2.php.net/manual/en/function.mb-detect-encoding.php. Не подойдет?

Автор: victor79 27.4.2014, 17:39
даже если бы у меня был PHP (а у меня на Си++), то все равно не то. Меня скорее интересует, что по этому поводу говорит какой нибудь стандарт, т.к. в реальности все равно заголовок до тега кодировки можно парсить как ASCII, т.к. там только английские символы.

В интернете найти такую штуку сложно, т.к. на запрос "html кодировка" выдается на много страниц про теги кодировки, а про этот нюанс ни слова.

Автор: AVA12 27.4.2014, 19:26
А какие варианты могуть быть в принципе?
1. Однобайтные кодировки, UTF-8, японские кодировки: символы ASCII 00 - 7E кодируются одним байтом, так что можно смело парсить файл, как ISO 8859-1.
2. UTF-16 (и, возможно, UCS-2): каждый символ кодируется двумя байтами, причем порядок байт может быть разным. В начале такого файла, скорее всего, будет соответствующий http://ru.wikipedia.org/wiki/Маркер_последовательности_байтов. Даже если его нет - не страшно, в HTML первым символом наверняка будет ASCII (пробел или начало тега), в представлении которого обязательно будет NUL. Значит, смотрим первые два байта файла, если видим BOM или NUL - парсим, как UCS-2.
3. Существование экзотики вроде EBCDIC, UTF-7, UTF-32 и прочее, думаю, можно смело игнорировать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)