встроенная библиотека lua не умеет обрабатывать utf-8.
нужно или пересобрать lua, доработав все встроенные функции поддержкой utf, или собрать свою DLL с функциями, благо greylink позволяет подгружать LUA-функции из дополнительных DLL например, для strlen у меня получилась такая функция на C++:
Code
int ustring_strlen(lua_State *L) {
const char* str = luaL_checkstring(L,1);
int len = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
lua_pushinteger(L, len-1);
return 1;
}
код LUA:
Code
len = ustring.strlen("Привет!")
DC():MessageBox("ustring.strlen(\"Привет!\")="..len, "test", "ok", "info")
результат: