Блог им. semiletov → обрывочные мысли о создании TEA - часть 2
Про определение кодировок в TEA. В старых версиях TEA было автоматическое определение. В новых его нет, но в файловом приказчике (который вместо окна «Открыть файл») есть кнопка "?" (всё время забываю к ней подсказку сделать), нажатие на которую приводит к автоматическому определению, и согласно результату кодировка выставляется в списке слева от кнопки.
Зачем так сделано?
Любое автоматическое определение кодировки подразумевает предварительную загрузку файла в некий буфер и анализ данных из этого буфера. Способов анализа несколько. Например, известная библиотека Enca пытается определить кодировку по частоте вхождения символов в документе.
TEA поступает иначе. В каждом языке есть короткие, часто используемые слова. Каждое такое слово можно представить как цепочку символов, где каждым звеном цепочки будет число — код символа в такой-то кодировке. Очевидно, что в разных кодировках цепочки различны (равно как и набор часто используемых коротких слов). TEA ищет такие цепочки в документе и если находит, то считает, что у документа кодировка, соответствующая цепочке.
Так вот, чтобы каждый раз при загрузке файла не выполнялись предварительная загрузка всего файла и анализ, я вынес автоматическое определение кодировки в отдельную функцию. Которая, кроме того, смотрит еще в заголовок HTML-файла, если документ таковым является.
Зачем так сделано?
Любое автоматическое определение кодировки подразумевает предварительную загрузку файла в некий буфер и анализ данных из этого буфера. Способов анализа несколько. Например, известная библиотека Enca пытается определить кодировку по частоте вхождения символов в документе.
TEA поступает иначе. В каждом языке есть короткие, часто используемые слова. Каждое такое слово можно представить как цепочку символов, где каждым звеном цепочки будет число — код символа в такой-то кодировке. Очевидно, что в разных кодировках цепочки различны (равно как и набор часто используемых коротких слов). TEA ищет такие цепочки в документе и если находит, то считает, что у документа кодировка, соответствующая цепочке.
Так вот, чтобы каждый раз при загрузке файла не выполнялись предварительная загрузка всего файла и анализ, я вынес автоматическое определение кодировки в отдельную функцию. Которая, кроме того, смотрит еще в заголовок HTML-файла, если документ таковым является.
- +4
- semiletov
- 22 сентября 2011, 17:43
Комментарии (3)
- ghost
- 22 сентября 2011, 19:55
- #
- ↓
- 0
Хоть и не понимаю, почему Чай, ставлю плюс.
- nobus1967
- 23 сентября 2011, 19:41
- #
- ↓
- 0
Нескромный вопрос: как с поддержкой HTML5?
- semiletov
- 24 сентября 2011, 00:30
- #
- ↑
- ↓
- 0
Это можно решить на уровне сниппетов. В TEA, в меню «вёрстка», я поместил лишь функции, общие для нескольких языков разметки.