Как сделать, чтобы UTF-8 авто определялся?
- Author
- Message
-
Offline
- Posts: 3
- Joined: Fri Jul 18, 2014 8:41 am
Как сделать, чтобы UTF-8 авто определялся?
Скачал сегодня. В настройках распознавание кодировки кириллица.
Сохраняю файл как utf8, переименовываю, чтобы из кодировка не бралась из "последние файлы". Открываю: Дурак
Сохраняю файл как utf8, переименовываю, чтобы из кодировка не бралась из "последние файлы". Открываю: Дурак
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Мне кажется, корень описанной проблемы в том, что полностью корректная последовательность из 10 байт, формирующая 5 символов UTF-8, по каким-то причином не определяется AkelPad-ом как UTF-8.
Поскольку определение кодировки в AkelPad опирается на какие-то таблицы, мне сложно прокомментировать, почему именно в этом случае авто-определение UTF-8 не срабатывает.
Упоминаемый мной "прямой" алгоритм определения UTF-8, основывающийся чисто на статье Википедии, описывающей спецификацию UTF-8, в этом фрагменте безошибочно узнаёт UTF-8.
Поскольку определение кодировки в AkelPad опирается на какие-то таблицы, мне сложно прокомментировать, почему именно в этом случае авто-определение UTF-8 не срабатывает.
Упоминаемый мной "прямой" алгоритм определения UTF-8, основывающийся чисто на статье Википедии, описывающей спецификацию UTF-8, в этом фрагменте безошибочно узнаёт UTF-8.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Instructor,
Но для UTF-8 существуют чётко прописанные зависимости в последовательности байт, и в принципе даже по одному многобайтному символу UTF-8 (по двум или более байтам) можно определить, это UTF-8 или нет. А уж для 5 многобайтных символов это можно сказать наверняка.
Т.е. что я хочу сказать: в случае с UTF-8 у нас не та ситуация, где кодировка "угадывается" - нет, для UTF-8 мы можем совершенно точно определить, является ли последовательность байт UTF-8 или нет.
Но для UTF-8 существуют чётко прописанные зависимости в последовательности байт, и в принципе даже по одному многобайтному символу UTF-8 (по двум или более байтам) можно определить, это UTF-8 или нет. А уж для 5 многобайтных символов это можно сказать наверняка.
Т.е. что я хочу сказать: в случае с UTF-8 у нас не та ситуация, где кодировка "угадывается" - нет, для UTF-8 мы можем совершенно точно определить, является ли последовательность байт UTF-8 или нет.
-
Offline
- Posts: 1161
- Joined: Sun Oct 20, 2013 11:44 am
А если такие символы не попали в буфер (даже увеличенный до 8196)?DV wrote:Instructor,
Но для UTF-8 существуют чётко прописанные зависимости в последовательности байт, и в принципе даже по одному многобайтному символу UTF-8 (по двум или более байтам) можно определить, это UTF-8 или нет. А уж для 5 многобайтных символов это можно сказать наверняка.
Или текст по большей части состоит из латинских букв и знаков препинания (не всех), которые есть однобайтовые, а в AkelPad стоит дефолтная б-гомерзкая СР1251?
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Skif_off,
В данной ситуации у нас 5 многобайтных символов UTF-8, которые иначе как UTF-8 можно распознать только ошибочно: Дурак
В общем же случае вы правы: если нет многобайтных UTF-8 символов, то UTF-8 не признать. Но если есть хотя бы несколько, то это уже потенциально UTF-8. А в нашей ситуации все 5 символов удовлетворяют условию многобайтного UTF-8, то есть выбор очевиден.
В данной ситуации у нас 5 многобайтных символов UTF-8, которые иначе как UTF-8 можно распознать только ошибочно: Дурак
В общем же случае вы правы: если нет многобайтных UTF-8 символов, то UTF-8 не признать. Но если есть хотя бы несколько, то это уже потенциально UTF-8. А в нашей ситуации все 5 символов удовлетворяют условию многобайтного UTF-8, то есть выбор очевиден.