JavaScriptのJNIメソッドを文字列引数の組み合わせで呼び出しています。 私はその文字列を取得するためにenv->GetStringChars(arg1, 0);
を使用しています。 問題が発生することがあります。余分な特殊文字や文字列が切り捨てられることがあります。JNIへの文字列が余分な文字を取得する
答えて
は最後に、私は、ソリューション 'ENV' はどのようなものです
const jchar* raw = env->GetStringChars(string, NULL);
if (raw == NULL)
return NULL;
wchar_t* wsz = new wchar_t[len+1];
memcpy(wsz, raw, len*2);
wsz[len] = 0;
env->ReleaseStringChars(string, raw);
return wsz;
'wchar_t'が2バイトより大きいプラットフォームでは、これは正しく動作しません。 –
これはWin Mobile 6で使用されます。 – marinnn
Javaでは、charsは16ビット文字(UTF-16エンコード)です。 C言語で平文であるchar*
として扱うと、nulバイト(通常は文字列の終わりとして扱われます)やその他の特殊文字が表示されます。
恐らく、nul charを避けるUTFエンコーディングを使用するべきです。 UTFでエンコードされた特殊文字を処理する必要があります。
JNI関数の 'UTF'バリアントの使用は、実際にはUTF-8ではない形式を使用するため、ほとんどの場合、悪い考えです。 Java文字列の内容をUTF-8文字列として取得したい場合は、 'jchar'データを取得してそれを自分で変換するか、Javaコードでその文字列をUTF-8の' byte'配列にエンコードしてアクセスする必要があります代わりに。 –
- 1. 余分な文字...?
- 2. PHPコードがjson文字列に余分な文字列を追加する
- 3. 余分なもの取得するコンソールI/Oの文字
- 4. Javaで予期しない余分なエスケープ文字を取得するRestful API JSON結果の文字列
- 5. Pythonリストの文字列間の部分文字列を取得
- 6. 余分な文字クローズブレース
- 7. 大きな文字列から部分文字列を取得するR
- 8. SQLの文字列から余分な文字を削除する方法は?
- 9. 文字列内の余分な空白文字を削除する
- 10. 文字の順序が重要な2文字間の部分文字列を取得する方法は?
- 11. 2つの文字列の間に余分な文字を見つける
- 12. 余分なセミコロンが文字列の等価性を破る
- 13. 部分文字列のインデックスを取得
- 14. 文字列内にある部分文字列の位置を取得する
- 15. 文字列の特定の部分文字列を取得する
- 16. 文字列[0]文字列の先頭文字を取得
- 17. 文字列にmysqlの部分文字列が含まれている場合、文字列から部分文字列を取得する
- 18. 文字列連結中に余分な文字が追加されました
- 19. JavaScriptの文字列から部分文字列をパターンで取得する
- 20. mysqlの文字列から部分文字列を取得する方法
- 21. 2文字列と親文字列の間の文字列を取得する
- 22. JavaScript内の文字列のすべての部分文字列を取得
- 23. 文字列から繰り返し部分文字列を取得する
- 24. 文字列から部分文字列を複数回取得する
- 25. 文字列内の余分なスペースを削除する方法
- 26. PHP出力文字列の余分なコンマを削除する
- 27. Grepの固定文字列は、正確な文字列をgrepをされていない、文字列は、余分な文字で終わる「 - 」も
- 28. Liquidの文字列から部分文字列を取得しますか?
- 29. PowerShell Regexは2文字列の部分文字列を取得します
- 30. Zend_Currency余分な文字を表示
を見つけましたか?どのように文字列をJNI関数に渡しますか?他の言語は何ですか? – bezmax
他の言語はC++ – marinnn