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);
}
}

Java jni字符串转换的更多相关文章

  1. android112 jni 把java的字符串转换成c的字符串,数组处理

    package com.itheima.charencode; import android.os.Bundle; import android.app.Activity; import androi ...

  2. java 二进制数字符串转换工具类

    java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...

  3. java之字符串转换

    参考http://how2j.cn/k/number-string/number-string-parse/317.html 数字转字符串 方法1: 使用String类的静态方法valueOf 方法2 ...

  4. Java实现字符串转换成整数

    1 问题描述 输入一个由数字组成的字符串,请把它转换成整数并输出.例如,输入字符串"123",输出整数123. 请写出一个函数实现该功能,不能使用库函数. 2 解决方案 解答本问题 ...

  5. Java实现字符串转换十六进制MD5值

    public class Encode {    public final static String md5(String s) {        char hexDigits[] = { '0', ...

  6. java自带BASE64工具进行图片和字符串转换

    java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  7. Java字符串转换

    public class StringConvertToInt{ public static void main(String[] args) { String a ="12a34bW()5 ...

  8. Java将一段逗号分割的字符串转换成一个数组

    String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是 ...

  9. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

随机推荐

  1. 使用Jexus服务器运行Asp.Net Core2.0程序

    前段时间写了篇关于.net core跨平台部署的文章.https://my.oschina.net/lichaoqiang/blog/1861977 主要讲述了,利用Nginx+CentOS+Supe ...

  2. redis-cluster无备节点,安装脚本

    #!/bin/bash #安装gcc yum -y install gcc #安装RVM所需的程序包 yum -y install gcc-c++ patch readline readline-de ...

  3. 211. Orchard学习 二 2、ManualResetEvent 与 AutoResetEvent

    一.Orchard里异步请求处理线程队列的控制 Orchard的Orchard.WarmupStarter模块,为HttpApplication.BeginRequest时间附加了一个异步处理事件:B ...

  4. flex和box-shadow一些兼容性问题

    html代码 <div class="creative-list"> <a class="creative-list-item"> &l ...

  5. win10 HTTP 错误 500.21 - Internal Server Error

    错误描述: HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错 ...

  6. 《剑指offer》内容总结

    (1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...

  7. JavaWeb学习 (十六)————JSP中的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  8. 各种实现js继承的方法总结

    昨天主要介绍了原型,在js中,原型,原型链和继承是三个很重要的概念,而这几个概念也是面试中经常会被问到的问题,今天,就把昨天还没总结的原型链和继承继续做一个整理,希望大家一起学习,一起进步呀O(∩_∩ ...

  9. webpack4打包报错:WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults fo

    运行命令webpack ./src/main.js ./dist/murenziwei.js后,目录上神马动静都没有,你以为在dist文件夹上会有murenziwei.js吗?毛都没有 警告和错误倒是 ...

  10. WEB页获取串口数据

    最近做一个B/S的项目,需要读取电子秤的值,之前一直没做过,也没有经验,于是在网上找到很多  大致分两种 使用ActiveX控件,JS调用MSCOMM32.dll的串口控件对串口进行控制 使用C#语言 ...