JNI unicode jstring to char*

来源:互联网 发布:mac上怎么删除文件 编辑:程序博客网 时间:2024/04/30 01:52

忘了在哪里看到的这段方法,向作者致谢,这个方法解决了中文在JNI中的调用问题,用于将jtring转换为char*
char*   jstringToWindows(   JNIEnv*   env,   jstring   jstr   ) 
  { 
      int   length   =   env->GetStringLength(jstr); 
      const   jchar*   jcstr   =   env->GetStringChars(   jstr,   0   ); 
      char*   rtn   =   (char*)malloc(   length*2+1   ); 
      int   size   =   0; 
      size   =   WideCharToMultiByte(   CP_ACP,   0,   (LPCWSTR)jcstr,   length,   rtn, 
                                                        (length*2+1),   NULL,   NULL   ); 
      if(   size   <=   0   ) 
          return   NULL; 
      env->ReleaseStringChars(   jstr,   jcstr   ); 
      rtn[size]   =   0; 
      return   rtn; 
  }