关于JNI的中文问题(急急急急急) JNI的中文支持是0,你必须将String转称byte[]再转回来。没有捷径…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是的,要将String先.getBytes(String encoding)转成byte[]数组,c然后根据得到的byte[]数组在构造回来。 不能给你完整的源代码。看这些片断吧:JNIEXPORT void JNICALL Java_CtgDll_jniClassify(JNIEnv *env, jobject obj, jbyteArray jarrayFileName) { jsize len; len = env->GetArrayLength(jarrayFileName); jbyte *fileName; fileName = (jbyte *) malloc(sizeof(jbyte)*(len+1)); if ( fileName!= NULL) { env->GetByteArrayRegion(jarrayFileName, 0, len, fileName); fileName[len] = '\0'; cout << "fileName: " << fileName << endl; }那么现在你可以直接用fileName了。 这是Java端传递参数的方法:public native void jniClassify(byte [] fileName); 再补充一句,fileName变量用char *转换类型就可以了。(char *)fileName 在Jni.h中有Java String 到C char[] 的转换方法。也有从C 中返回参数的方法 C中不时return char*就可以的。要用jni.h中提供的方法! 求助:关于java.lang.ClassCastException的处理方法。 大侠帮忙看看10转2进制的代码迷惑~ 都说Sting变量初值是null,下面这段代码似乎推翻了这个结论 读取最后一行记录! 改正错误! 请教高人:JTable如何显示中文啊? 方法如何返回数组? 用java连接数据库时能够不用数据源吗? 相同的包会冲突吗? 哪位做过文档编辑器? 我被骗了!!! 求救:[Microsoft][SQLServer JDBC Driver] Error establishing socker 关于ConsoleReader类问题....
(JNIEnv *env, jobject obj, jbyteArray jarrayFileName)
{
jsize len;
len = env->GetArrayLength(jarrayFileName);
jbyte *fileName;
fileName = (jbyte *) malloc(sizeof(jbyte)*(len+1));
if ( fileName!= NULL) {
env->GetByteArrayRegion(jarrayFileName, 0, len, fileName);
fileName[len] = '\0';
cout << "fileName: " << fileName << endl;
}那么现在你可以直接用fileName了。
public native void jniClassify(byte [] fileName);