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

Russian main discussion
Locked
  • Author
  • Message
Offline
Posts: 286
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Instructor
Теперь всё хорошо, спасибо большое.

Offline
Posts: 9
Joined: Tue Oct 20, 2015 1:43 pm
Contact:

Post by m0nkrus »

Не срабатывает автоопределение кодировки (CMD-файл). Файл в кодировке OEM866, а открывает его программа в кодировке по умолчанию UTF8.

Читал FAQ, но все бесполезно.

Согласно FAQ пробовал следующее:
1. Снял запоминание.
2. Кириллицы в скрипте ровно 16 символов.
3. Буфер увеличил.

Попытка "Определить заново" ни к чему не приводит. Кодировка не меняется.
Только методы переключения/открытия вручную работают.

Файл открывается в той кодировке, которая указана в качестве кодировки по умолчанию.

Версия программы 4.9.6 х86.

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

Post by Instructor »

m0nkrus wrote:2. Кириллицы в скрипте ровно 16 символов.
Не все символы кириллицы входят в группу символов для распознавания, а только те, которые входят :)

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

m0nkrus
По идее можно набросать скрипт, который будет открывать *.bat/*.cmd в OEM866 на русскоязычной ОС, и добавить его в CmdLineBegin (что-то подобное обсуждалось в теме сабжа на Ру-борде, но тот всё ещё лежит).

Instructor, а какие функции определяют кодировку? Стало любопытно взглянуть :)

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

Post by Instructor »

Skif_off wrote:По идее можно набросать скрипт...
AutoScript-DetectEx.js
Skif_off wrote:... какие функции определяют кодировку?
Определение не юникодовых кодировок - функция AutodetectMultibyte в Edit.c.

Offline
Posts: 9
Joined: Tue Oct 20, 2015 1:43 pm
Contact:

Post by m0nkrus »

Instructor
Символы, составляющие слово "Системны" подходят? Это слово повторяется в тексте дважды. Возможно в FAQ не слишком корректно написано. Там сказано, что символов должно быть больше 11. Но не было уточнения, что при этом все 11 символов должны быть разными. Так как?

Skif_off
Да мне не настолько принципиально. Я могу и Alt+D нажать, не развалюсь. Просто, раз функция заявлена, то, по логике, должна работать. Потому здесь и отписался.
Last edited by m0nkrus on Tue Oct 20, 2015 8:55 pm, edited 2 times in total.

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

Post by Instructor »

m0nkrus wrote:Там сказано, что символов должно быть больше 11. Но не было уточнения, что при этом все 11 символов должны быть разными.
Они не должны быть разными, они должны быть из группы для распознавания - что и указано в FAQ. Если вас интересует какие именно это символы, можете глянуть функцию AutodetectMultibyte в исходном файле Edit.c.

Offline
Posts: 9
Joined: Tue Oct 20, 2015 1:43 pm
Contact:

Post by m0nkrus »

Instructor
Если честно, мне проще забить, нежели пытаться понять что это и где это. Я всего лишь так, между делом решил поделиться проблемой. Но самому копаться в коде, увольте. У меня и своего кода выше крыши.

P.S. Попытался подключить AutoScript-DetectEx.js. В ответ Too few parameters.

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

m0nkrus wrote:В ответ Too few parameters.
Неверно заданы параметры скрипта, по идее:

Code: Select all

CmdLineBegin=/Call("Scripts::Main", 2, "AutoScript-DetectEx.js", `-DetectArray='[["cmd,bat","","","866",-1,0x0419]]'`)
Instructor
Спасибо, не подумал поискать в скриптах, помню, что разговор был на Ру-борде :) Ещё оказалось, что этот скрипт уже в папке кандидатов на рассмотрение на предмет добавления.

Добавлено:
А чем продиктован выбор символов?
Вряд ли имеет значение, но заметил, что в Edit.c в комментарии

Code: Select all

//оеаикмнтОEАИКМНТ
"E" - латинская [0045]

Добавлено:
Вопрос про выбор снимается как детский: частотность букв давно посчитана.

Offline
Posts: 9
Joined: Tue Oct 20, 2015 1:43 pm
Contact:

Post by m0nkrus »

Skif_off

Code: Select all

CmdLineBegin=/Call("Scripts::Main", 2, "AutoScript-DetectEx.js", `-DetectArray='[["cmd,bat","","","866",-1,0x0419]]'`)
Как-то не догадался, что нужно эту строку в ini вручную прописать. Не обратил внимание, что в коде закоментировано указание добавить ее вручную. Пытался скрипт через интерфейс программы подключить. Теперь сделал и, слава богам(!), CMD открывается в кодировке OEM866. Skif_off, Instructor - спасибо!

Code: Select all

//оеаикмнтОEАИКМНТ
Если это определяющие символы, тогда да, мой CMD-скрипт не дотягивает до критических 11 символов. У меня их получается 10.

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

Post by Instructor »

Skif_off wrote:"E" - латинская [0045]
Латинская и в коде. Исправлено.

Offline
Posts: 9
Joined: Tue Oct 20, 2015 1:43 pm
Contact:

Post by m0nkrus »

Рано я радовался со скриптом AutoScript-DetectEx.js. Сегодня все тот же CMD-файл уже открывается почему-то в кодировке Windows-1251.

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

Post by Instructor »

m0nkrus
См. описание параметров скрипта. Думаю вам нужно использовать -2 вместо -1 в параметре DetectLang.

Offline
Posts: 9
Joined: Tue Oct 20, 2015 1:43 pm
Contact:

Post by m0nkrus »

Instructor
Поменял. Ничего не изменилось.
Правда у меня в скрипте количество определяемых символов сократилось до 6. Может это повлияло?

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

Post by Instructor »

m0nkrus
А, читать описание кто будет? :) Я ведь ошибся: -2 вместо 0x0419, т.е.

Code: Select all

/Call("Scripts::Main", 2, "AutoScript-DetectEx.js", `-DetectArray='[["cmd,bat","","","866",-1,-2]]'`)
Locked