Столкнулся со следующей проблемой и не знаю что делать.
Упрощенно выглядит так (Win7):
1. В Notepad пишем "это тест", сохраняем (кодировка по умолчанию - ANSI), закрываем
2. Открываем в Akelpad (кодировка по умолчанию - UTF8, но в настройках стоит "распознавать кодировки в тч 1251") - видим абракадабру
3. Наживаем в тексте добавить строку (ввод), сохраняем.
4. В результате имеем не читаемый ничем тест и я не могу его прочитать раскодировавщими - что делать?
UTF8 поставил из за плагина "autosave" - текст с web-страниц вставленный в редактор Akelpad приводил к краху всех открытых не сохраненных файлов если была по умолчанию кодировка 1251.
Как раскодировать текст и правильно настроить Akelpad?
Проблема с кодировками
- Author
- Message
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Re: Проблема с кодировками
При открытом файле, внизу, на статус-баре - там, где надписи Ins | Win | 65001 ( UTF-8 ) without BOM - нажимаем правую кнопку мыши на надписи "65001 ( UTF-8 ) without BOM" и в появившемся всплывающем меню выбираем Open As -> 1251 (ANSI - Cyrillic).
P.S. А иероглиф из "это тест" получается зачётный, да: ��沲
P.S. А иероглиф из "это тест" получается зачётный, да: ��沲
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Либо Alt+Wнажимаем правую кнопку мыши на надписи "65001 ( UTF-8 ) without BOM" и в появившемся всплывающем меню выбираем Open As -> 1251 (ANSI - Cyrillic)
C преобразованием в/из utf8 всё строго: стоит один раз перегнать что-то не то, и данные потеряны. Это происходит потому, что в спеки кодировки встроена сигнатура символов, позволяющая отличать корректные utf8 символы от мусора, а АП, судя по всему, тихо глотает этот мусор.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Кстати, да.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.