android jni 中文乱码

网友投稿 568 2022-10-25

android jni 中文乱码

android jni 中文乱码

事情的起因:下面这个在java中调用就返回乱码了。

jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ){ return (*env)->NewStringUTF(env, "你好");}

下面这个在java中调用没有问题,返回的是hello world

jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ){ return (*env)->NewStringUTF(env, "hello world!");}

1.首先我们还是先设置Eclipse的全局字符集编码(防止乱码的杀手锏)

Window->Preferences->General->Workspace

见如图所示:

2.那个问题的解决方案:

2.1把jni里用到的.c文件或者.cpp文件要改成utf-8的文件类型,可以用记事本打开,另存为的时候就知道编码了。

2.2:把文字转换成 jbyteArray形式返回到java层,再用String result = new String(byte[],"Utf-8");来转换。C++类似下面的代码。

jbyteArray Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ){ char * result = "你好"; jbyte *by = (jbyte*)result; jbyteArray jarray = env->NewByteArray(strlen(result)); env->SetByteArrayRegion(jarray,0,strlen(result),by); return jarray;}

​​​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Deployinator - 提取自Etsy的一个部署框架
下一篇:Android 中使用OpenGL ES进行2D开发(绘制第一个三角形)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~