JNI中文乱码

来源:互联网 发布:淘宝母婴行业转化率 编辑:程序博客网 时间:2024/06/03 13:50

http://blog.sina.com.cn/s/blog_643e8386010106jp.html

Java中文乱码问题

  Java中文乱码问题在很多情况下都可能发生:不同应用间,不同平台间都可能会产生中文乱码问题。

1.为什么会出现乱码?

     首先在此说明一下Java->Jni->C++C++->Jni->Java乱码的原因:

     Java内部是用16bitunicode编码(UTF-16)来表示字符串的,无论英文还是中文都是两个字节的长度;

     Jni内部是使用UTF-8来表示字符串的,而UTF-8是变长的unicodeascii字符是一个字节,中文是三个字节;而在C++中,ascii用一个字节表示,中文用两个字节来表示。在我们编写程序时,出现中文而又没有做出字符转换的话,就会出现了乱码。

2.针对乱码解决对策?

     在我们采用默认的编码环境下,中文编码环境默认的为GBK。在Eclipse中,我们可以通过如下代码获取编码方式:System.out.println(System.getProperty("file.encoding"));

     1)首先要修改工程的编码方式为UTF-8。(Eclipse右键->Properties->Resource)。

     2)其次将java中的String传递到Jni中的jstring,在JNI中通过GetStringUTFChars()方法将jstring转换成指针类型的char就可以啦,在c++中应用这个含有中文的char就不会出现乱码的情况了。

     同理:C++->Jni->Java采用同样的处理方式就可以了

 

原创粉丝点击