java JNI 传中文参数到c乱码

lhjiang 发布于 2014/04/02 08:18
阅读 665
收藏 0
JNI问题:本人第一次做JNI调用C实现的本地方法 但是发现安装路径为中文时不能正常运行,发现是Java传中文参数到C出现乱码,求大神给点指点,能给一段java到c的编码转换的代码最好了,谢谢了。
加载中
0
鉴客
鉴客

两段代码提供参考:

char * JStringToWindows(JNIEnv * pJNIEnv, jstring jstr)  
{  
    jsize len = pJNIEnv->GetStringLength(jstr);  
    const jchar * jcstr = pJNIEnv->GetStringChars(jstr, NULL);  
    int size = 0;  
    char * str = (char *)malloc(len * 2 + 1);  
    if ((size = WideCharToMultiByte(CP_ACP, 0, LPCWSTR(jcstr), len, str, len * 2 + 1, NULL, NULL)) == 0)  
        return NULL;  
    pJNIEnv->ReleaseStringChars(jstr, jcstr);  
    str[size] = 0;  
    return str;  
}
jstring WindowsTojstring( JNIEnv* env, char* str )  
{  
    jstring rtn = 0;  
    int slen = strlen(str);  
    unsigned short * buffer = 0;  
    if( slen == 0 )  
        rtn = (env)->NewStringUTF(str );   
    else 
    {  
        int length = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, NULL, 0 );  
        buffer = (unsigned short *)malloc( length*2 + 1 );  
        if( MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, (LPWSTR)buffer, length ) >0 )  
            rtn = (env)->NewString(  (jchar*)buffer, length );  
    }  
    if( buffer )  
        free( buffer );  
    return rtn;  
}

l
lhjiang
谢谢,马上试一下
返回顶部
顶部