Собираем баги UTF-8 для разработчегов OpenKore

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Вс янв 21, 2007 6:00 pm

Мб вопрос дурацкий и я что-то не понимаю, но всё-таки есть такая проблема: в последних местных билдах при попытки загрузки macros.txt, сохранённого в UTF-8 (с помощью блокнота :wink:), кор пишет при загрузке:
Loading control/macros.txt...
control/macros.txt: ignoring line 'automacro castOnMe {' (munch, munch, strange block)
control/macros.txt: ignoring '}' (munch, munch, strange food)
Мде... короче, там после ' перед automacro потерялся вроде какой-то управляющий символ, выглядит, как точка сверху (при копировании расшифровался как #63), то есть не похож на те символы, которые пихаются в начало для UTF-8.

Отсюда вопрос: чья это бага и что с ней делать? Повторюсь, до какой-то версии это работало.

UPD: Как оказалось, оно лечится введением первой пустой строки, в смысле тогда он пишет ту же ошибку, но в кавычках только тот 63 символ, и при этом всё работает... Но всё равно хотелось бы убрать это как-нибудь, поскольку явная бага...
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Вс янв 21, 2007 8:35 pm

Antarx
Юзаем поиск. Уже оочень давно об етом писали, и решение нашли.

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Вс янв 21, 2007 9:27 pm

kLabMouse
Поиск юзал, но он так и не ответил, как убрать это сообщение об ошибке... Вопрос скорее в том, откуда берётся этот символ, потому как вроде не похож на начальные символы в utf, и как его убрать?..
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Вс янв 21, 2007 9:40 pm

Antarx
Ето Блокнот добавляет. Уже писалось не раз. Если поиск не рулит, то бродим по вопросам пока не найдём.
А вообще обычно просто добавлялась одна лишняя зкоментированая трочка в начале макро файла. и Всё.

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Вс янв 21, 2007 10:36 pm

kLabMouse
разницы, закоменченная эта строчка, или нет - я не нашёл. Кроме того, если эти 3 символа в начале utf файла удалять, ошибка будет совсем другой... Мб для перла там должны быть другие символы, чтобы он их нормально понимал? :wink:

Вопрос в другом: как этот самый злополучный символ впихнуть в Parser.pm, в смысле есть ли в перловском regexp'е спец.символ, означающий начало файла (а не ^, означающий начало строки), и как туда вставить выдающий ошибку символ (в смысле, не хотелось бы просто удалять первый символ, не зная, utf-8 файл открыт или нет)?

Сокращая всё вышенаписанное, осталось:
1) Есть ли спец. символ начала файла в regexp'е? Или можно как-то проще получить именно первый символ?
2) Можно ли проверить, открыт utf-8 файл или нет?
3) Как вставить тот самый символ, выдающий ошибку, в искомый файл?
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 22, 2007 5:52 am

Antarx
Нужно смотреть как ВиВи поправил поддержку для самого Кора чтоб шарило всю ету хренотень.

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Пн янв 22, 2007 7:48 am

kLabMouse
угу... вот только вопросы остались открытыми, а ответ на любые 2 из них даёт решение проблемы методом добавления одной строчки в Parser.pm. Вопросы вообщем-то по перлу, который я не знаю совсем, а перелопачивать доку в поисках ответов на нетривиальные вопросы пока что нет ни времени, ни желания.

Неужели тут нет ни одного человека, который знает перл на уровне, достаточном для ответа на эти вопросы?
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 22, 2007 1:25 pm

И так: находим такие две строчки. И добавим ту что выделена жирным. Должно помочь
open FILE, "<:utf8", $file or return 0;
foreach (<FILE>) {
s/{FEFF}//g;

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Пн янв 22, 2007 2:53 pm

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

Кстати, точно этот символ не может случайно попасться ещё где-нибудь? И ещё, нафига здесь нужен модификатор g?.. :wink:
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 22, 2007 3:00 pm

Antarx
Я фикс спёр ещё с FileParsers.pm. Там вроде оно везде, потому подумал и сюда сунуть.


К сожелению У меня нет такой проблемы (Я не блокнотом пользуюсь).

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Пн янв 22, 2007 3:02 pm

kLabMouse
потрясающе... а чем тогда сохранять/какие должны быть первые 3 байта?
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 22, 2007 3:08 pm

Antarx
Я пользуюсь EditPad Pro. Вроде пока устраивает. Что касается байтиков, не имею ни малейшего понятия.

DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Пн янв 22, 2007 3:51 pm

Antarx писал(а):угу, спасибо, вывод: утверждается, что код этого символа - FEFF. Что, похоже, неправда, потому как от фикса ничего не меняется...
Что у тебя в начале файло? Напиши первые байтыыыы...

Оно такое? viewtopic.php?t=447&start=18 ?

Вот что за гадость может быть вставленна в файл;

UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
Это коды вставленные в файл! Но когда мы считываем файл, то
мы не получаем непосредственно эти коды.
Мы получаем код:
Unicode 65279 = 0xFEFF

так что это должно работать

s/\x{FEFF}//g;
модификатор g - заменять все вхождения. на всякий.

П.С.
:oops:
Маус, у тебя вроде ошибка в регэекспе...

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx » Пн янв 22, 2007 9:41 pm

DInvalid
угу, только одна беда - затирание этих 3 байт давало ошибку загрузки throw в XKore.CannotStart...

Спасибо, теперь работает... Неприятно только, что ещё 3 года назад такой глупости с регэкспами не делал... Короче, спасибо!
Единственное, что: вроде этот символ идёт первым в файле, потому если он по каким-либо причинам попадётся ещё раз - это будет нехорошо... Можно как-нибудь поправить так, чтобы он только 1 раз в файле находил, а лучше чтобы только в начале? (конечно, как я понимаю, можно написать s/^\x{FEFF}//g;, но хотелось бы нормальное решение...)

kLabMouse
Посмотреть байтики занимает меньше минуты, если есть на машине хоть один хекс-редактор...

PS Хоть в билд добавьте - ценных фикс :wink:
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)

Kolpak
Начинающий
Сообщения: 26
Зарегистрирован: Ср дек 13, 2006 4:59 pm

Сообщение Kolpak » Пн янв 22, 2007 9:46 pm

Вот же вы любите все усложнять)
поставь в макрос.тхт первую строчку коментарий
и все будет ок

------
#
macro....{
.
.
}
------

Ответить