String ? 来自LUA的符号
我已通过以下方式注册了LUA api函数: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_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())