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);// 英文操作系统时,乱码!
}
...全文
127 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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上,执行的不一样!
回复
yetaodiao 2008-06-20
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?能说具体点么?
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2008-06-19 10:53
社区公告
暂无公告