Android JNI开发---java与c++之间的中文字符串传递

最近在做一个Android电子词典,其中在从词库中读取词条时,用到了jni---java调用c++;在java代码里调用本地方法时,难免会java与c++之间传递参数。传递的参数若是英文的话,比较好解决,网上一般都有解决方法,用着也没问题;但是在传递中文字符串时,就需要转换一下。下面就是我自己的传递方式:

1.C++ --> java

在C++中,解压出的词条是 jbyte* 类型的,有英文,有中文,所以,我就把这些数据以byteArray的形式给传递到java里面:

//功能:把解压出的词条放入数组中 //输入:plema 解压出的词条 //输入:i 词条索引

void ADDDictListItem(JNIEnv *env, jobject obj,jbyte *plema,inti)

{

jstring str; jbyteArray lem=env->NewByteArray(strlen((char*)plema));

env->SetByteArrayRegion(lem, 0,strlen((char*)plema), (jbyte*)plema);

(env)->SetObjectArrayElement(args, i, lem);

}

在java里面接收到 byte [] lems后,用创建一个新字符串的方式 String s=new String(lems,"GBK"),就可以得到那些传递过来的字符串。

2.java --> C++

在java向c++传递中文字符串的时候,我也是以后 byte[]的形式传递过去。先在java中把中文字符串转换成byte[]:

String str="阿姨";

byte []= str.getBytes("GBK");

在C++中:

//功能:接收从java传递过来的数组 //输入:lems java传递过来的数组

void searchZNInputLemmas(JNIEnv *env, jobject obj,jbyteArray lems)

{

jbyte * str; str =(jbyte *) (env)->GetByteArrayElements(lems, false);

(env)->ReleaseByteArrayElements(lems, str, 0);

}

jni 传递字符串到java_Android JNI开发-java与c++其间的中文字符串传递相关推荐

  1. java乱码base64,解决 JAVA WebSocket 解析 base64 后中文字符串乱码

    解决 JAVA WebSocket 解析 base64 后中文字符串乱码 解决 JAVA WebSocket 解析 base64 后中文字符串乱码 春风如贵客,一到便繁华.各位看官先赞再看,养成好习惯 ...

  2. 编写程序,测试字符串“你好,欢迎来到Java世界”的长度,将字符串的长度转换成字符串进行输出,并对其中的“Java”四个字母进行截取,输出截取字母以及它在字符串中的位置。

    编写程序,测试字符串"你好,欢迎来到Java世界"的长度,将字符串的长度转换成字符串进行输出,并对其中的"Java"四个字母进行截取,输出截取字母以及它在字符串 ...

  3. java字符串底层实现_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...

    Java基础之字符串操作--String 字符串 什么是字符串?如果直接按照字面意思来理解就是多个字符连接起来组合成的字符序列.为了更好的理解以上的理论,我们先来解释下字符序列,字符序列:把多个字符按 ...

  4. Java 生成固定长度随机中文字符串

    /*** * 生成固定长度随机中文,kuojung * @param n 中文个数 * @return 中文串 */ public static String getRandomChineseStri ...

  5. java中截取后几位字符串_java截取字符串后几位

    java中常用的字符串的截取方法_计算机软件及应用_IT/计算机_专业资料.jsp中常见使用技术,js,jstl,eclipse,java 1.length() 字符串的长度 例:char chars ...

  6. 中文字符串函数php,php截取中文字符串函数实例,_PHP教程

    php截取中文字符串函数实例, 本文实例讲述了php截取中文字符串函数.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //中文字符串截取 function substr_zh($st ...

  7. php怎么截取中文第一个字符串,php中怎么截取中文字符串

    php中如何截取中文字符串? 众所周知php原生函数substr是不支持截取中文字符串的.下面的代码提供了多种截取php中文字符串的方法. 1. 截取GB2312中文字符串 0xa0) { $tmps ...

  8. 如何提取代码中的中文字符串

    前言 在一般情况下,程序中的中文字符串都是写在某个文件中读取(例如json),但是大部分时候我们都是直接写入到代码中,这个时候如果我们想把字符串提取出来就需要一个一个去找,或者通过IDE提供的字符串匹 ...

  9. python字符串前面加f什么意思_详解Python中字符串前“b”,“r”,“u”,“f”的作用...

    1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时 ...

最新文章

  1. PCA(主成分分析)+LDA(线性判别分析)+区别
  2. mac easy_install 安装插件失败
  3. mysql 5.6.14安装_MySQL5.6.14下载、安装及配置安装图文教程
  4. 实现AJAX的基本步骤
  5. 并查集——家谱(洛谷 P2814)
  6. 高斯牛顿迭代法的原理及实现(经典例子,附C和C++代码,含运行结果)
  7. html网页版国际象棋,棋友推荐的十五大国外国际象棋网站
  8. assimp批量转模型,[OpenGL] 使用Assimp导入模型(Qt)
  9. WIN10鼠标乱跳问题解决办法
  10. 苹果手机设置邮箱服务器端口设置,苹果手机邮箱怎样设置
  11. 奇点云数据中台技术汇 | 数据治理——企业数字化转型的基石
  12. 质心定位算法C语言实现,TOA定位算法.pdf
  13. 2020.9.23 金山云后台开发岗笔试 2道编程
  14. iic获取salve设备地址_Linux下使用IIC总线读写EEPROM(读写i2c从设备通用程序)
  15. 成都c语言程序设计,成都c语言编程学习入门
  16. linux操作记事簿
  17. 人教版初中信息技术电子课本_电子课本|2020秋 部编人教版初中化学九年级上册教材电子课本(高清更新可打印)...
  18. Axure教程—堆积面积图
  19. 独家 | 十四问Roadstar.ai 创始人佟显乔、衡量,了解解聘风暴始末...
  20. chart.js ajax 折线图,如何在ChartJs 的折线图中显示数据值或索引标签

热门文章

  1. plt.figure、plt.subplot介绍以及绘制图中图(含代码)
  2. 老鼠识别 yolo老鼠识别 深度学习老鼠识别 仓鼠识别 名厨亮灶
  3. Z-Stack中HalUARTWrite的使用以及osal_strlen()的使用
  4. 最新的linux学习路线图
  5. mysql时间段重叠_MySQL判断两个时间段是否有重合
  6. nginx 多配置(.conf)的使用
  7. 最新Python面试经验技巧总结,值得收藏
  8. 开心消消乐【C语言】
  9. android p支持三星吗,不会爆炸的三星Note 7 可以更新 Android P了
  10. max日期最大值为0_0-1背包问题和vivo运矿石问题