你的java是怎么调用这个dll的?如果只是得到dll传来的中文字符然后由java显示的话,那应该是你的编码格式有问题,这和你用的java开发工具环境、系统环境、jdk版本都有关,一个一个排除吧,一般是你开发工具的编译参数设置不当。

解决方案 »

  1.   

    byte[] u = str.getBytes("iso-8859-1");
              return new String(u,"GB2312");简单!!!!jstring windowsToJstring( JNIEnv* env, char* str )
    {
      AFX_MANAGE_STATE(AfxGetStaticModuleState());//这行可以不要
      jstring rtn = 0;
      int slen = strlen(str);
      wchar_t* buffer = 0;
      if( slen == 0 )
        rtn = env->NewStringUTF(str); //UTF ok since empty string
      else
      {
        int length = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, NULL, 0 );
        buffer = (wchar_t*)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;
    }
      

  2.   

    public String getCNString(String strEnglish)
        {
            String strTemp = null;
            byte[] baTemp = null;
            try
            {
                baTemp = strEnglish.getBytes("ISO8859-1");
                strTemp = new String(baTemp);
            }
            catch (UnsupportedEncodingException ex)
            {
                strTemp = null;
            }
            return strTemp;
        }
      

  3.   

    String a = "我喜欢你";a = new String(a.getBytes("ISO8859-1"),"GBK");这样更加简单。