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编码,可减少一次编码转换

 1     jboolean isCopy = JNI_FALSE;
 2     const jchar* value = env->GetStringChars(jstringValue, &isCopy);
 3     if (value != NULL)
 4     {
 5         QString qsValue = QString::fromUtf16(value);
 6         if (isCopy)
 7         {
 8             env->ReleaseStringChars(jstringValue, value);
 9         }
10     }

 

另外关于GetStringUTFChars返回的是(改进的)utf8编码字符串,可以参考这篇文章:https://blog.wsxyeah.xyz/2016/07/23/jni-charset-encoding/

 

2、jstring转BSTR

因为BSTR就是unicode编码,用GetStringChars转换很方便:

 1     jboolean isCopy = JNI_FALSE;
 2     const jchar* paramValue = env->GetStringChars(jstrParam, &isCopy);
 3     if (paramValue != NULL)
 4     {
 5         BSTR bstr = SysAllocString(paramValue); //使用后记得释放:SysFreeString(bstr);
 6         if (isCopy)
 7         {
 8             env->ReleaseStringChars(jstrParam, paramValue);
 9         }
10     }

 

转载于:https://www.cnblogs.com/roadbike/p/9016252.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值