JNI中文乱码

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采用同样的处理方式就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值