通过jni调用c/c+ ,传中文字符串的时候乱码 ,java有什么方法,把java的中文编码转换成c++,再把c++的转换成java吗。
java内部是使用16bit的unicode编码( UTF-16 )来表示字符串的,无论中文英文都是2字节;
jni内部是使用UTF-8编码来表示字符串的, UTF -8是变长编码的unicode ,一般asci字符是1字节,中文是3字节;
c/c+ +使用的是原始数据, ascii就是一个字节了, 中文一般是GB2312编码,用两个字节来表示一个汉字。
使用wide char方法实现
http://shanyejunjie.iteye.com/blog/2190502
建议使用Base64字节加密传输。