Page 3 of 3

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 16:40
by citRiks

Latest post of the previous page:

buniak_a_h wrote: Sat 25 Apr, 2020 05:04 Насколько я понимаю, если только латиница, то строка в OEM, ANSI и UTF-8 совпадают. Увы, я сдуру сделал виртуалку в 20 Гб одним файлом. Для тестирования это удобно, а для передави - нет. Вот последние полчаса (или больше) упаковывается, и ещё два по стольку осталось.
Чего-то наоборот там 100500 файлов по 300КБ(!) :)
Поэтому ВебДавом это богатство скачать не получилось,
пришлось ставить шпионское ПО от Яндекса
Ну вобщем докачалось, посмотрю вскоре

Но вроде же как и так понятно,
что есть несовместимость работы с юникодными строками в этих ДЛЛ-ках с Винда10?
если только латиница, то строка в OEM, ANSI и UTF-8
Думаю что не обязаны совпадать, строки могут иметь BOM,
могут ожидаться \0 в конце (типа как в Си),
может ожидаться длина строки вначале (типа как в Паскале)

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 17:32
by buniak_a_h
citRiks wrote: Sat 25 Apr, 2020 16:40
если только латиница, то строка в OEM, ANSI и UTF-8
Думаю что не обязаны совпадать, строки могут иметь BOM,
могут ожидаться \0 в конце (типа как в Си),
может ожидаться длина строки вначале (типа как в Паскале)
Вы путаете собственно строки с их способом хранения, принятым в языке.
Строка - последовательность символов. Символы могут быть однобайтовые и мультибайтовые. Мультибайтовые (2-х-байтовые) в UTF-8 начинаются с \00, поэтому если код символа < 127, то он однозначно однобайтовый. Поэтому в указанных кодировках эти строки представляют из себя одну и ту же последовательность байтов.
\00 как признак конца, видимо, неправильно обрабатывается библиотекой LuaUTF8 в случае, если он - первый. Или не последний (как библиотека узнаёт длину - не знаю). В данном случае, видимо, именно первый байт нулевой, т.к. после замены UTF8.gsub на string.gsub ошибки никакой не выводится. Т.е. debug.traceback возвращает пустую строку.
Я не настаиваю, возможно, эта модель существует только в моём воображении. Но она многое может объяснить. Как говорят англичане, если нечто крякает как утка, летает, ныряет как утка, то скорее всего и на вкус оно как утка. ;-)

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 17:36
by buniak_a_h
citRiks wrote: Sat 25 Apr, 2020 16:40 Чего-то наоборот там 100500 файлов по 300КБ(!) :-)

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 19:37
by citRiks
buniak_a_h wrote: Sat 25 Apr, 2020 17:32 Вы путаете собственно строки с их способом хранения, принятым в языке.
Я могу ошибаться, но все сущее где-то как-то хранится в каком-то формате, иначе оно не было бы сущим, не? :)
buniak_a_h wrote: Sat 25 Apr, 2020 17:36 Как говорил наш препод капраз..
А капраз это что за должность?

Ну ладно, хватит бесплодной схоластики,
у меня между прочим ваш дистрибитив как есть запустился
Но я к нему вообще-то добавил sqlite3.dll, а можно ли спросить,
как без него собственно предполагалось что это будет реквайрится и запускаться?

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 19:49
by citRiks

Code: Select all

  sql = ffi.load("sqlite3") 
  -- вот тут вылетает, причём от строки-параметра не зависит. 
  -- Можно любую абракадабру написать - диагностика не меняется !!!
мне кажется это было уже последствие падения первой попытки зареквайрить модуль,
в результате чего FFI-декларации оказались все в расстройстве или отсутствующими

Еще признаюсь что менял Локаль на Инглишь, потом обратно на русский,
потом устанавливал стабильные версии и х64, и х32, запускал в них.
Не трогая вашу портабельную дистру конечно, но все-таки
И, к сожалению, уже в последнюю очередь скопировал sqlite3.dll.
скопировал бы ее раньше, не потерял бы где-то час времени )

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 19:56
by buniak_a_h
citRiks wrote: Sat 25 Apr, 2020 19:37 у меня между прочим ваш дистрибутив как есть запустился
1. Это - не дистр, а так - снимок состояния.
2. У меня он тоже запускался. Падал при require …
3. Тут несколько вариантов:
(а) sqlite3.dll находится по путям (у меня, например, есть в %APPDATA%\…) И, кстати, в той виртуальной машине, что я высылал, она тоже есть (видимо, есть в дистрибутиве винды). Это, кстати, может быть причиной ошибки: фар х86, а винда х64. Но тогда должна быть явно другая диагностика.
(б) я, собственно, ничего не запускал и не «реквайрил» (не знаю, что это такой; может и реквайрил, но не специально).

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 19:59
by citRiks
zg wrote: Sat 25 Apr, 2020 02:40 я весь фар с sqlite3.dll клал в русскую папку, всё окей.
buniak_a_h,
Эх, зря мы его не послушались сразу.
я-то предположил что этот вариант вы сами уже проверили,
и пошел проверять другие свои гениальные предположения.
(и да, у меня на свеом компе запускалось без проблем потому-что SQLite3.dll уже где-то была в путях)
А вот как вы предполагали что заработает без DLL этого? )

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 20:07
by citRiks
buniak_a_h wrote: Sat 25 Apr, 2020 19:56 sqlite3.dll .. И, кстати, в той виртуальной машине, что я высылал, она тоже есть (видимо, есть в дистрибутиве винды).
не было ее там нигде, я сейчас специально еще раз проверил..
buniak_a_h wrote: Sat 25 Apr, 2020 19:56 Это, кстати, может быть причиной ошибки: фар х86, а винда х64. Но тогда должна быть явно другая диагностика.
нунизнаю, ваша портабельная дистра х86, для нее берем sqlite3.dll тоже х86 конечно,
кладем ее в ФАР-Хоум, и тогда шансы что это все заработает значительно повышаются
buniak_a_h wrote: Sat 25 Apr, 2020 19:56 я, собственно, ничего не запускал и не «реквайрил» (не знаю, что это такой; может и реквайрил, но не специально).
ну "реквайр" это русскaя редакция слова "require",
так что я не думаю что это прошло мимо вас :)

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 20:09
by citRiks
buniak_a_h wrote: Sat 25 Apr, 2020 19:56 У меня он тоже запускался. Падал при require …
ну я имел ввиду что этот пакет модулей успешно запустился (require)

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 20:11
by buniak_a_h
citRiks wrote: Sat 25 Apr, 2020 19:59
zg wrote: Sat 25 Apr, 2020 02:40 я весь фар с sqlite3.dll клал в русскую папку, всё окей.
buniak_a_h,
Эх, зря мы его не послушались сразу.
Я не понял, что значит "в русскую папку". У меня нет ни одной русской папки, мой постоянный ФАР прекрасно работает; с предыдущими версиями ФАРа проблем именно с такой ошибкой никогда не было. Могло быть что-нить типа "unable load library" (и, вроде, бывало такое) - тогда бы я сразу сообразил, чего не хватает. Но программа диагностики, вылетающая при выводе диагностики - это оххх…
citRiks wrote: Sat 25 Apr, 2020 19:59 и да, у меня на свеом компе запускалось без проблем потому-что SQLite3.dll уже где-то была в путях)
А вот как вы предполагали что заработает без DLL этого?
А юзер, которому это делалось, и не должен был её юзать. Он вообще не знает, что такое SQLite. Просто скинул ему мои скрипты, а в одном из них было require. В результате ФАР падал с некорректной диагностикой. А кто виноват? - Я.

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 20:20
by citRiks
buniak_a_h wrote: Sat 25 Apr, 2020 20:11 Я не понял, что значит "в русскую папку".
я-то про русскую папку понял, но не понял что такое "весь ФАР" :ha: и причем тут "весь ФАР"?
ну сейчас я догадываюсь что наверное это был не "весь ФАР", а ваша урезанная дистра,
иначе это действительно было неуместно тестить не на вашей дистре

invalid UTF-8 code

Posted: Sat 25 Apr, 2020 20:35
by buniak_a_h
citRiks wrote: Sat 25 Apr, 2020 20:20 не понял что такое "весь ФАР"
Я тоже. Я не писал такого.