日期:2014-05-20  浏览次数:20901 次

Java调用批处理bat文件产生的乱码问题
为什么使用utf-8的编码会产生乱码?
而使用ANSI编码却没啥问题,而且执行正常?

bat文件如下:
Java code
@title 备份数据库
@bcp "SELECT * FROM sportSys.dbo.competitions where sportSys.dbo.competitions.userId="+%1 queryout %2competitions.xls -T -c >>%3log.txt
@bcp "SELECT * FROM sportSys.dbo.item where sportSys.dbo.item.userId="+%1 queryout %2item.xls -T -c >>%3log.txt
@bcp "SELECT * FROM sportSys.dbo.itemType where sportSys.dbo.itemType.userId="+%1 queryout %2itemType.xls -T -c >>%3log.txt
@bcp "SELECT * FROM sportSys.dbo.agenda where sportSys.dbo.agenda.userId="+%1 queryout %2agenda.xls -T -c >>%3log.txt
@pause
@exit


[color=#FF0000]如果是ANSI编码,则Java中通过
Java code
Runtime.getRuntime().exec
调用正常!
但是,如果编码是UTF-8,则提示如下错误:[/color]
HTML code


E:\Tomcat6.0\bin>锘緻bcp "SELECT * FROM sportSys.dbo.competitions where sportSy
.dbo.competitions.userId="+9 queryout E:\Tomcat6.0\webapps\SportSys\download\9\
ompetitions.xls -T -c  1>>E:\Tomcat6.0\webapps\SportSys\download\9\log.txt
'锘緻bcp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
请按任意键继续. . .


第一条语句不执行,报错,
后面的语句能正常执行!

------解决方案--------------------
天朝用户windows一把但是GBK编码,只不过说成是ansi,用utf-8当然不行咯,你试下gbk
------解决方案--------------------
保存bat时修改编码
------解决方案--------------------
用定时器设计的门铃