Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String ? 来自LUA的符号_String_Api_Qt_Lua - Fatal编程技术网

String ? 来自LUA的符号

String ? 来自LUA的符号,string,api,qt,lua,String,Api,Qt,Lua,我已通过以下方式注册了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; } 它工作正常,直

我已通过以下方式注册了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(),如:ą、ł、ź等(它是用ALT键书写的“a”、“l”、“z”)。对于这些符号,qDebug(“%s”,_arg)*仅为它们提供“?”。如何在我的程序中识别这些值

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

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


谢谢。

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


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

什么是“返回我”和“给我”?您如何显示此信息?这听起来像是一个显示问题,而不是数据问题。@Mud我的意思是,当我使用qDebug(“%s”)打印_arg时(qDebug()的工作原理类似于printf),它会将我打印为“Aa?”而不是“Aa”。打印在哪里?到控制台?这是Windows命令控制台吗?Linux中的Bash?完全是别的吗?它通常支持多字节字符吗?如果我们讨论的是命令shell,您可以尝试
echo Aaś
并查看它打印的内容。正如您所说,“Aaś”的结果是:“_arg[0]-65'a'const char,_arg[1]-97'a'const char,_arg[2]-63'?”const char。这真的很奇怪。@tobi,那么我想你的Lua“脚本”应该在UTF8中,但可能在另一个代码页中。ś正在转换为?在更早的地方,字符串将抛出它无法处理的任何字符。您需要改用toUtf8()之类的东西。您现在正在与编译器的编码进行斗争。试试这个<代码>qDebug(“\xc5\x9b”)-从这个方便的页面:哦。这个,然后<代码>QChar数据=0x015B;qDebug(QString(&data,1))。。。如果可以的话,试一下
qDebug(ui.textBox->toPlainText())