请教一个关于JNI参数传递的问题

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

最近在Linux上写了一个测试程序。

先是用pure Java——String stemp=new String("文件";

byte[] sarray=stemp.getBytes();

然后通过打印可以看见"文件"这个String在Java中的编码是CEC4,BCFE

然后我用C—— char stemp[10];

strcpy(stemp,"文件";

然后通过打印可以看见"文件"这个String在C中的编码也是CE,C4,BC,FE

但是我又写了一个JNI的小东西。Java的接口是一个native void test(String temp);

C的实现是:JNIEXPORT void JNICALL Java_t_test(JNIEnv *env,jstring temp)

{

……

jboolean iscopy;

const char* str=(*env)->GetStringUTFChars(env, temp, &iscopy);

……

};

结果发现:如果我用GetStringUTFChars()的时候,把"文件"传过去就成了E6,96,87,E4,BB,B6

改用GetStringChars()的时候,把"文件"传过去就成了87,65,F6,4E.

而如果不传中文,传ASCII字符的时候一切正常……

郁闷哪……这是怎么回事啊?谁能指点一下吗?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航