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() に自分の言語の記号 (ą、ł、ź など) を入れるまでは問題なく動作します (ALT キーを押しながら書かれた 'a'、'l'、'z' です)。これらのシンボルの場合、 qDebug( "%s", _arg )* は「?」のみを提供します それらすべてのために。プログラムでこれらの値を認識する方法は?

たとえば、スクリプトで sendFunc( "Aaś" ) を使用すると、出力される _arg は "Aa?" になります。

*qDebug は Qt ライブラリからのもので、printf() と同じように機能しますが、デバッグ ウィンドウに出力します。

ありがとう。

4

1 に答える 1

1

QTはUnicode文字列を使用します。Luaから返される文字列は他のコードページにあると思います。qDebugで使用するには、Unicodeに変換する必要があります。

文字列の実際の内容(16進値の観点から)を確認するには、qDebugを呼び出す前にコードにブレークポイントを設定します。

于 2012-07-13T20:54:48.507 に答える