Как такое фиксить? С интернетом всё вроде нормально. Даже AS удалил - всё по-прежнему.
Ошибка возникает не только при mimgui, но вообще при всех зависимостях...
похоже что менеджер зависимостей был установлен криво, возможно из-за установленной тестовой версии. удали его полностью (папки libstd, luarocks, luajit) и поставь заново.
Кодировка json-функций переведена на UTF-8 и крашит скрипт если передается кириллица в CP1251. Это будет фикситься в виде неявного преобразования или нет и нужно будет как сейчас, явно переводить кодировку = encodeJson({u8("Кириллица")}) ? Основная проблема этого - старые скрипты будут крашиться и их нужно переводить под эту особенность
видишь ли, дело в том, что и прошлая реализация, основанная на библиотеке lua-cjson, поддерживала только UTF-8 с той лишь разницей, что не выдавала ошибок при столкновении с некорректной utf-8 последовательностью, вместо чего любые данные записывались и читались как строка без проверки на корректность.
это указано в
официальной документации функции decode (она же decodeJson в мунлоадере):
cjson.decode will deserialise any UTF-8 JSON string into a Lua value or table.
...
All escape codes will be decoded and other bytes will be passed transparently. UTF-8 characters are not validated during decoding and should be checked elsewhere if required.
и в
документации к функции encode (encodeJson) в сноске Caution:
Lua CJSON will successfully encode/decode binary strings, but this is technically not supported by JSON and may not be compatible with other JSON libraries. To ensure the output is valid JSON, applications should ensure all Lua strings passed to cjson.encode are UTF-8.
...
к сожалению, в документации мунлоадера это не было отражено и разработчики использовали эти функции некорректно, передавая функциям не utf-8 строки, потому что это работало. а теперь в мунлоадере используется свой (де)сериализатор json в lua и другая библиотека для преобразования json, которая так же поддерживает только utf-8, но производит все проверки корректности и не позволяет их отключить.
на данный момент я вижу несколько вариантов решений:
- сделать lua-cjson частью дистрибутива и функции encodeJson, decodeJson алиасами json.encode, json.decode (совсем нежелательно)
- вернуть старое решение с lua-cjson обратно в мунлоадер (а вместе с ним и проблему, из-за которой оно было заменено)
- с помощью костылей заставить используемую библиотеку проглатывать невалидный utf-8 без сопротивления
- заменить используемую библиотеку другой, толерантной к некорректному utf-8 или поддерживающей однобайтовые кодировки
- оставить всё как есть и наплевать на скрипты, которые ранее работали нормально лишь из-за отсутствия дополнительных проверок
надо подумать.