初步怀疑是两个程序间传递参数的时候,出现的问题,现象如下:1、本人做一个Java程序打开一个exe(c++编写)时,exe端读取Java端发送的参数出现乱码;
2、在中文操作系统下没有问题,但是切换到英文操作系统时,所有的中文参数都变成了"?"问号;
3、C++端代码没有问题,使用VC,Debug传参数时,中文是可以传递的!
4、Java端代码也没问题,debug到native方法时,所有参数正常表示!
5、尽可能不改变C++端代码!---------------------- Java端代码 ---------------------------
public static void main(String args[]) { String[] array = {
"D:\\act\\Debug\\act.exe",
"-view", "D:\\测试.txt" };// try {
// array[2] = new [code=Java]String(array[2].getBytes("unicode"), "unicode");
// } catch (UnsupportedEncodingException e1) {
// e1.printStackTrace();
// } try {
Process pro = Runtime.getRuntime().exec(array, null, null);
} catch (IOException e) {
e.printStackTrace();
}
}[/code]---------------------- C++端代码 (unicdoe编译)---------------------------int APIENTRY _tWinMain(HINSTANCE hInstance,
                      HINSTANCE hPrevInstance,
                      LPTSTR    lpCmdLine,
                      int       nCmdShow )
{
::MessageBox(NULL, lpCmdLine, L"Debug", MB_OK);// 英文操作系统时,乱码!
}

解决方案 »

  1.   

    可以尝试做一下encoding?能说具体点么?
      

  2.   

    String(array[2].getBytes("ISO-8859-1"), "gb2312"); 是不是这个码不对啊,试试看这个
      

  3.   

    C++对支持utf-8吗?
    ---------------
    支持unicode
      

  4.   

    3、C++端代码没有问题,使用VC,Debug传参数时,中文是可以传递的! 
    4、Java端代码也没问题,debug到native方法时,所有参数正常表示! 
    你这两个操作也是在英文操作系统下做的吗?
      

  5.   

    把java和C++两端的编码格式重新设置成相同的
      

  6.   

    3、C++端代码没有问题,使用VC,Debug传参数时,中文是可以传递的! 
    4、Java端代码也没问题,debug到native方法时,所有参数正常表示! 
    你这两个操作也是在英文操作系统下做的吗?
    -----------------------------
      

  7.   

    建议统一成UTF-8
    统一下编码格式~~试试看------------------------
    能说的具体点吗?好像C++编译没有utf-8的编码吧!
    另外,中文操作系统是正常的,所以应该和操作系统默认的编码有关系
      

  8.   

    String s="我是多少积分少了";bytes[] b=s.getBytes();
    String str=new String(b,"iso-8859-1");
      

  9.   

    String s="hehe"; bytes[] b=s.getBytes(); 
    String str=new String(b,"iso-8859-1");
      

  10.   

    装上中文字库就OK了-------------
    没那么简单,
        private native long create(String cmdstr,
           String envblock,
           String dir,
           boolean redirectErrorStream,
           FileDescriptor in_fd,
           FileDescriptor out_fd,
           FileDescriptor err_fd);
    这个方法,在不同的OS上,执行的不一样!