Java jni字符串转换
1、jstring转QString
对于Qt5.2以上(含)可以用QAndroidJniObject::toString(),详见这里:https://stackoverflow.com/questions/27345570/convert-jstring-to-qstring
低版本的Qt就要自己转换了,jni中有两个获取jstring的方法:
GetStringUTFChars——获取(改进的)utf8编码字符串
GetStringChars——获取unicode编码字符串,推荐用这种,因为Java内部就是unicode编码,可减少一次编码转换
jboolean isCopy = JNI_FALSE; const jchar* value = env->GetStringChars(jstringValue, &isCopy); if (value != NULL) { QString qsValue = QString::fromUtf16(value); if (isCopy) { env->ReleaseStringChars(jstringValue, value); } }
另外关于GetStringUTFChars返回的是(改进的)utf8编码字符串,可以参考这篇文章:https://blog.wsxyeah.xyz/2016/07/23/jni-charset-encoding/
2、jstring转BSTR
因为BSTR就是unicode编码,用GetStringChars转换很方便:
jboolean isCopy = JNI_FALSE; const jchar* paramValue = env->GetStringChars(jstrParam, &isCopy); if (paramValue != NULL) { BSTR bstr = SysAllocString(paramValue); //使用后记得释放:SysFreeString(bstr); if (isCopy) { env->ReleaseStringChars(jstrParam, paramValue); } }
相关推荐
绿豆饼 2020-05-26
YukiRain 2020-04-11
田有朋 2020-03-20
magic00 2020-01-19
tangjikede 2020-01-04
zuihaobushi 2012-07-08
FlightForever 2013-09-02
TTHHVV 2010-09-12
wanggongzhen 2010-08-08
丁一鸣的CSDN 2010-05-26
yuanzhiweiss 2011-08-22
nickey 2011-08-17
newtrekWang 2011-08-16
wenjs00 2011-06-30
我叫河蟹 2011-05-31
学峰的学习笔记 2011-09-22
taiyuanwuyin 2012-01-21
Helene 2011-11-21