Java执行exe(C++)时,exe端取得参数乱码(英文OS),急!!!!!!!!(解决后另外送分)

gilibao 2008-06-19 10:53:04
初步怀疑是两个程序间传递参数的时候,出现的问题,现象如下:

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);// 英文操作系统时,乱码!
}
...全文
184 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
gilibao 2008-06-23
  • 打赏
  • 举报
回复
装上中文字库就OK了

-------------
没那么简单,
private native long create(String cmdstr,
String envblock,
String dir,
boolean redirectErrorStream,
FileDescriptor in_fd,
FileDescriptor out_fd,
FileDescriptor err_fd);
这个方法,在不同的OS上,执行的不一样!
  • 打赏
  • 举报
回复
String s="hehe";

bytes[] b=s.getBytes();


String str=new String(b,"iso-8859-1");
shili150 2008-06-20
  • 打赏
  • 举报
回复
String s="我是多少积分少了";

bytes[] b=s.getBytes();


String str=new String(b,"iso-8859-1");
gilibao 2008-06-20
  • 打赏
  • 举报
回复
建议统一成UTF-8
统一下编码格式~~试试看

------------------------
能说的具体点吗?好像C++编译没有utf-8的编码吧!
另外,中文操作系统是正常的,所以应该和操作系统默认的编码有关系
gilibao 2008-06-20
  • 打赏
  • 举报
回复
3、C++端代码没有问题,使用VC,Debug传参数时,中文是可以传递的!
4、Java端代码也没问题,debug到native方法时,所有参数正常表示!
你这两个操作也是在英文操作系统下做的吗?
-----------------------------
nec_258 2008-06-20
  • 打赏
  • 举报
回复
dircxy007 2008-06-20
  • 打赏
  • 举报
回复
装上中文字库就OK了
jianghuxiaoxiami 2008-06-19
  • 打赏
  • 举报
回复
可以尝试做一下encoding
zy2419 2008-06-19
  • 打赏
  • 举报
回复
统一下编码格式~~试试看
talent_marquis 2008-06-19
  • 打赏
  • 举报
回复
建议统一成UTF-8
kuyesuifeng 2008-06-19
  • 打赏
  • 举报
回复
把java和C++两端的编码格式重新设置成相同的
tanlingyun 2008-06-19
  • 打赏
  • 举报
回复
3、C++端代码没有问题,使用VC,Debug传参数时,中文是可以传递的!
4、Java端代码也没问题,debug到native方法时,所有参数正常表示!
你这两个操作也是在英文操作系统下做的吗?
gilibao 2008-06-19
  • 打赏
  • 举报
回复
C++对支持utf-8吗?
---------------
支持unicode
nec_147 2008-06-19
  • 打赏
  • 举报
回复
一洽客服系统 2008-06-19
  • 打赏
  • 举报
回复
英文系统是不是对汉语编码要进行转换
laorer 2008-06-19
  • 打赏
  • 举报
回复
C++对支持utf-8吗?
seeSkyblue 2008-06-19
  • 打赏
  • 举报
回复
String(array[2].getBytes("ISO-8859-1"), "gb2312");

是不是这个码不对啊,试试看这个

gilibao 2008-06-19
  • 打赏
  • 举报
回复
可以尝试做一下encoding?能说具体点么?

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧