2

我已经使用以下方法注册了 LUA api 函数:

lua_register( luaState, "someFunc", aaa::someFunc);

这个函数必须从 someFunc 的参数中加载一个字符串。

我正在这样做:

int aaa::someFunc( lua_State* state ) {
    const char* _arg = ( const char* )lua_tostring( state, -1 );

    // ...

    return 0;
}

它工作正常,直到我将一些我的语言的符号放入 someFunc() 中,例如:ą、ł、ź 等(它是 'a'、'l'、'z' 写的按住 ALT 键)。对于这些符号 qDebug("%s", _arg )* 只给我 "?" 为他们所有人。如何在我的程序中识别这些值?

例如,当我在脚本中使用 sendFunc("Aaś") 时,打印的 _arg 是“Aa?”。

*qDebug 来自 Qt 库,它的工作原理与 printf() 相同,但输出到调试窗口。

谢谢。

4

1 回答 1

1

QT 使用 Unicode 字符串。我希望从 Lua 返回的字符串在其他代码页中。您需要将其转换为 Unicode 以与 qDebug 一起使用。

要查看字符串中的真正内容(以十六进制值表示),请在调用 qDebug 之前对代码进行断点。

于 2012-07-13T20:54:48.507 回答