Bugs / Найденные баги (1)

Russian main discussion
Locked
  • Author
  • Message
Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Так все правильно
1251(1251) - текст
1251(866) - кракозябры

=> 866

1251(866(1251)) - кракозябры
1251(866(866)) - текст

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Instructor
Спасибо. Теперь всё корректно. Попробовал переключать регистр в ново-греческом тексте и в древне-греческом – пока никаких ошибок не замечено.

LEN
Offline
Posts: 30
Joined: Thu Aug 21, 2008 9:31 pm

Post by LEN »

Fr0sT

Не понял ответа, поэтому переформулирую вопрос.

Есть файл в кодировке 1251, открытый как 1251 (т. е. читабельный).

Надо часть текста перекодировать в 866, чтобы потом эта часть читалась при открытии файла как 866 (цель - нужная информация должна читаться при открытии файла в любой кодировке: и 1251, и 866).

Сейчас, чтобы получить нужный результат, приходится выполнять команду "Перекодировать из 866 в 1251", что довольно нелепо: весь текст и так в 1251, а в 866 ещё ничего и нет.

Казалось бы логичнее выполнять команду "Перекодировать из (текущей) 1251 в (другую) 866", не так ли?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

LEN wrote:Казалось бы логичнее выполнять команду "Перекодировать из (текущей) 1251 в (другую) 866", не так ли?
Будем опираться на вашу логику: берем текущий текст в кодировке 1251, в результате имеем полученный текст UTF-16LE (AkelPad работает только с Unicode'ом). Затем мы приступаем к процессу конвертации. На этом шаге мы имеем две кодировки UTF-16LE и 866. И что теперь нам нужно указать в параметрах преобразования (имея только UTF-16LE и 866), чтобы в результате получить 1251?

Чтобы более детально разобраться с механизмом конвертирования текста, см. функцию RecodeTextW в файле исходников Edit.c, иначе доводы будут биться о ваше представление о правильности.

LEN
Offline
Posts: 30
Joined: Thu Aug 21, 2008 9:31 pm

Post by LEN »

Instructor

Спасибо за ответ!

Детально разобраться с механизмом конвертирования текста по Edit.c мне не под силу, но достаточно того, что Вы поняли мои сомнения.

Правильно ли я понял, что последнее преобразование ("чтобы в результате получить 1251") нужно для отображения перекодированного в 866 текста в текущем (1251) окне Акелпада?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

LEN
Верно.

Поправлю себя - механизм выглядит так:
- Получаем текст, как есть, в UTF-16LE.
- Конвертируем в однобайтовую кодировку, используя поле "Из:".
- Конвертируем из однобайтовой кодировки в UTF-16LE используя поле "В:".

LEN
Offline
Posts: 30
Joined: Thu Aug 21, 2008 9:31 pm

Post by LEN »

Instructor

А с какой целью в поле "В:" оставлена возможность указывать кодировку, отличную от кодировки, в которой открыт файл?
Что-то я не могу с ходу придумать, для чего это можно было бы использовать.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

LEN
Есть процесс конвертирования из А в Б, есть процесс "расконвертирования" из Б в А - они имеют разную направленность.

Например, открыт батник в кодировке 1251. Если нужно конвертировать русский текст, не меняя кодировку, указывается из 866 в 1251. Если нужно увидеть "каракули" в батнике, не меняя кодировку, указывается из 1251 в 866.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

При снятии галочки в настройке Coder-плагина у опции "Использовать кэш" AkelPad падает при включенном codefold
Подпись ошибки:

Code: Select all

AppName: akelpad.exe	 AppVer: 4.8.4.0	 ModName: coder.dll
ModVer: 11.3.0.0	 Offset: 0000ed62 
Последовательность действий:
1) Открыть какой-либо подсвечиваемый файл (например html) с включенными режимами highlight и codefold.
2) Вызвать настройку Coder-плагина вкладка общие.
3) Снять галочку "Использовать кэш", нажать [Применить] и [OK] ==> Падение AkelPad

Доп.инф.:
Опции CodeFold1: Список-Авто, Лимит-10000, Следовать за кареткой-Везде, Макс.документ-1000000симв.
Опции CodeFold2: Узел-Круг, [х]Отмечать тэги, [х]Сворачивать все при открытии.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

opk44
Не воспроизводится. Вышлите/выложите папку с AkelPad'ом.

LEN
Offline
Posts: 30
Joined: Thu Aug 21, 2008 9:31 pm

Post by LEN »

Instructor

Спасибо, "дошло". Для просмотра "кракозябров" я обычно использую просмотрщик Тотал Командера (у меня там сделано быстрое переключение между 1251, 866 и KOI8), поэтому сам и не догадался.

Offline
Posts: 2
Joined: Tue Jul 30, 2013 12:57 pm

Post by Andrew »

мучает в последних версиях один баг. у меня в текстовом документе ссылка на файл и ниже пароль для него. когда я выделенный текст копирую Ctrl+C все копируется и вставляется нормально. Если я выбираю команду Копировать по правому щелчку мыши, то часто копируется только одна верхняя строка, документ простой, содержимое такого вида.

http://сайт

pass: пароль

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Andrew
Вообще-то, чтобы добиться такого эффекта нужно еще постараться. У меня это получилось только при выделении справа-налево и снизу-вверх + при включенной опции "Показывать гиперссылки" + курсор при выделении не должен выйти за пределы гиперссылки. В таком случае вместо настроенного пользовательского контекстного меню вызывается куцее стандартное базовое и копируется не все выделение, а только сама гиперссылка.
Поэтому если Вас сильно мучает этот баг, то можете либо отключить показ гиперссылок (Настройки - Параметры... - [Редактор 2] - Гиперссылки [x] Показывать), либо захватывать в выделение еще и верхнюю пустую строку (если, конечно, таковая имеется), либо выделять сверху-вниз и слева направо.
Upd.:
Еще можно в начало каждой строки добавить 1 пробел ([Ctrl+A] + [Space]). Смысл тот же, что и при захвате в выделение верхней пустой строки (особенно если ее нет). И поменяйте способ открытия гиперссылок с одинарного клика на двойной (это безопаснее в плане ложных срабатываний).

Offline
Posts: 2
Joined: Tue Jul 30, 2013 12:57 pm

Post by Andrew »

opk44
спасибо. придется отключить показ гиперссылок до исправления, либо привыкнуть к Ctrl+A, потому как вставка пробелов не совсем айс.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Andrew
1) Там еще и третий вариант предлагался (выделять сверху-вниз), что вместе с переключением на двойной клик довольно незатратно.
2) "привыкнуть к Ctrl+A" это по-видимому опечатка если речь шла о копировании с клавиатуры. Кстати сам я предпочитаю вместо Ctrl+C/Ctrl+V пользоваться парой Ctrl+Insert/Shift+Insert (На стандартной, а не ноутбучной клавиатуре).
А теперь самое неприятное
3) Я еще раз посмотрел на Вашу проблему, и понял что "исправления" ждать придется очень и очень долго, поскольку, как оказалось, это и не баг вовсе. Так что мы оба ошибались. В действительности же там происходит вот что. Когда курсор оказывается на гиперссылке, то вызывается не "Меню окна редактирования" контекстного меню, а "Меню ссылок" контекстного меню. В нем ПЕРЕД стандартными операциями копирования/вставки идут три операции со ссылками и еще две с откатом...

Code: Select all

"Открыть" Link(1)
"Копировать" Link(2)
"Выделить" Link(3)
SEPARATOR
SET(8)
"" Command(4151) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 10)
"" Command(4152) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 11)
SEPARATOR
"" Command(4153) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 7)
"" Command(4154) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 8)
"" Command(4155) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 9)
"" Command(4156) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 25)
SEPARATOR
"" Command(4157)
UNSET(8)
Т.е. срабатывает элементарная невнимательность - мы видим первое слово "Копировать" (оно без иконки) и уже не замечаем ниже второго слова "Копировать" (оно c иконкой).
Понимание происходящего дает Вам новые возможности. Например, чтобы не надеяться на свою внимательность и в будущем, Вы можете подредактировать "Меню ссылок" контекстного меню так как Вам удобней (изменив порядок следования пунктов).
Добраться до настроек контекстного меню через "Настройки"-"Плагины..."-"ContextMenu::Show"-"Изменить меню..."

P.S. Приношу свои извинения за невольное введение Вас в заблуждение.
Locked