Проблема с кодировками

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 3
Joined: Sat Mar 09, 2013 6:58 pm

Проблема с кодировками

Post by pmu800 »

Столкнулся со следующей проблемой и не знаю что делать.

Упрощенно выглядит так (Win7):
1. В Notepad пишем "это тест", сохраняем (кодировка по умолчанию - ANSI), закрываем
2. Открываем в Akelpad (кодировка по умолчанию - UTF8, но в настройках стоит "распознавать кодировки в тч 1251") - видим абракадабру
3. Наживаем в тексте добавить строку (ввод), сохраняем.
4. В результате имеем не читаемый ничем тест и я не могу его прочитать раскодировавщими - что делать?

UTF8 поставил из за плагина "autosave" - текст с web-страниц вставленный в редактор Akelpad приводил к краху всех открытых не сохраненных файлов если была по умолчанию кодировка 1251.

Как раскодировать текст и правильно настроить Akelpad?

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Проблема с кодировками

Post by DV »

При открытом файле, внизу, на статус-баре - там, где надписи Ins | Win | 65001 ( UTF-8 ) without BOM - нажимаем правую кнопку мыши на надписи "65001 ( UTF-8 ) without BOM" и в появившемся всплывающем меню выбираем Open As -> 1251 (ANSI - Cyrillic).
P.S. А иероглиф из "это тест" получается зачётный, да: ��沲

Offline
Posts: 3
Joined: Sat Mar 09, 2013 6:58 pm

Post by pmu800 »

оно становиться еще забавнее, если выполнить п. 3 (или оно само выполниться при autosave) и попробовать потом прочитать файл указанным вами способом :(

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

нажимаем правую кнопку мыши на надписи "65001 ( UTF-8 ) without BOM" и в появившемся всплывающем меню выбираем Open As -> 1251 (ANSI - Cyrillic)
Либо Alt+W ;)

C преобразованием в/из utf8 всё строго: стоит один раз перегнать что-то не то, и данные потеряны. Это происходит потому, что в спеки кодировки встроена сигнатура символов, позволяющая отличать корректные utf8 символы от мусора, а АП, судя по всему, тихо глотает этот мусор.

Offline
Posts: 3
Joined: Sat Mar 09, 2013 6:58 pm

Post by pmu800 »

видимо так и есть, а все было бы хорошо, если бы АП тихо проглатывал юникод символы при сохранении в кодировке 1251 как это делает notepad.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Fr0sT wrote:C преобразованием в/из utf8 всё строго
Кстати, да.
Последовательность символов "это тест" имеет следующие коды:
"FD F2 EE 20 F2 E5 F1 F2".
Стандарт UTF-8 чётко определяет, сколько байт относится к одному символу: http://en.wikipedia.org/wiki/UTF-8
Согласно приведенной там табличке, байт 0xFD (0b11111101) является 1-м байтом символа из 6 байт
(по формуле 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx).
Следующий байт 0xF2 (0b11110010) уже не удовлетворяет условию "10xxxxxx" для второго байта в 6-байтном символе.
Получается, да, это явная ошибка в AkelPad.
Последовательность байт "FD F2" не является корректной последовательностью для UTF-8.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

а все было бы хорошо, если бы АП тихо проглатывал юникод символы при сохранении в кодировке 1251 как это делает notepad
Да уж лучше бы ругался!
Post Reply