Page 93 of 99
Posted: Sun Oct 04, 2015 6:45 am
by yozhic
Instructor
Теперь всё хорошо, спасибо большое.
Posted: Tue Oct 20, 2015 1:52 pm
by m0nkrus
Не срабатывает автоопределение кодировки (CMD-файл). Файл в кодировке OEM866, а открывает его программа в кодировке по умолчанию UTF8.
Читал
FAQ, но все бесполезно.
Согласно FAQ пробовал следующее:
1. Снял запоминание.
2. Кириллицы в скрипте ровно 16 символов.
3. Буфер увеличил.
Попытка "Определить заново" ни к чему не приводит. Кодировка не меняется.
Только методы переключения/открытия вручную работают.
Файл открывается в той кодировке, которая указана в качестве кодировки по умолчанию.
Версия программы 4.9.6 х86.
Posted: Tue Oct 20, 2015 3:40 pm
by Instructor
m0nkrus wrote:2. Кириллицы в скрипте ровно 16 символов.
Не все символы кириллицы входят в группу символов для распознавания, а только те, которые входят

Posted: Tue Oct 20, 2015 8:24 pm
by Skif_off
m0nkrus
По идее можно набросать скрипт, который будет открывать *.bat/*.cmd в OEM866 на русскоязычной ОС, и добавить его в
CmdLineBegin (что-то подобное обсуждалось в теме сабжа на Ру-борде, но тот всё ещё лежит).
Instructor, а какие функции определяют кодировку? Стало любопытно взглянуть

Posted: Tue Oct 20, 2015 8:35 pm
by Instructor
Skif_off wrote:По идее можно набросать скрипт...
AutoScript-DetectEx.js
Skif_off wrote:... какие функции определяют кодировку?
Определение не юникодовых кодировок - функция AutodetectMultibyte в Edit.c.
Posted: Tue Oct 20, 2015 8:40 pm
by m0nkrus
Instructor
Символы, составляющие слово "Системны" подходят? Это слово повторяется в тексте дважды. Возможно в FAQ не слишком корректно написано. Там сказано, что символов должно быть больше 11. Но не было уточнения, что при этом все 11 символов должны быть разными. Так как?
Skif_off
Да мне не настолько принципиально. Я могу и Alt+D нажать, не развалюсь. Просто, раз функция заявлена, то, по логике, должна работать. Потому здесь и отписался.
Posted: Tue Oct 20, 2015 8:45 pm
by Instructor
m0nkrus wrote:Там сказано, что символов должно быть больше 11. Но не было уточнения, что при этом все 11 символов должны быть разными.
Они не должны быть разными, они должны быть из группы для распознавания - что и указано в FAQ. Если вас интересует какие именно это символы, можете глянуть функцию AutodetectMultibyte в исходном файле Edit.c.
Posted: Tue Oct 20, 2015 8:54 pm
by m0nkrus
Instructor
Если честно, мне проще забить, нежели пытаться понять что это и где это. Я всего лишь так, между делом решил поделиться проблемой. Но самому копаться в коде, увольте. У меня и своего кода выше крыши.
P.S. Попытался подключить AutoScript-DetectEx.js. В ответ Too few parameters.
Posted: Tue Oct 20, 2015 9:55 pm
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 в комментарии
"E" - латинская [0045]
Добавлено:
Вопрос про выбор снимается как детский: частотность букв давно посчитана.
Posted: Wed Oct 21, 2015 3:03 pm
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 - спасибо!
Если это определяющие символы, тогда да, мой CMD-скрипт не дотягивает до критических 11 символов. У меня их получается 10.
Posted: Wed Oct 21, 2015 3:51 pm
by Instructor
Skif_off wrote:"E" - латинская [0045]
Латинская и в коде. Исправлено.
Posted: Thu Oct 22, 2015 10:16 am
by m0nkrus
Рано я радовался со скриптом AutoScript-DetectEx.js. Сегодня все тот же CMD-файл уже открывается почему-то в кодировке Windows-1251.
Posted: Thu Oct 22, 2015 10:39 am
by Instructor
m0nkrus
См. описание параметров скрипта. Думаю вам нужно использовать -2 вместо -1 в параметре DetectLang.
Posted: Thu Oct 22, 2015 12:54 pm
by m0nkrus
Instructor
Поменял. Ничего не изменилось.
Правда у меня в скрипте количество определяемых символов сократилось до 6. Может это повлияло?
Posted: Thu Oct 22, 2015 1:14 pm
by Instructor
m0nkrus
А, читать описание кто будет?

Я ведь ошибся: -2 вместо 0x0419, т.е.
Code: Select all
/Call("Scripts::Main", 2, "AutoScript-DetectEx.js", `-DetectArray='[["cmd,bat","","","866",-1,-2]]'`)