Java调用批处理bat文件产生的乱码问题

时间:2022-09-30 09:00:18
为什么使用utf-8的编码会产生乱码?
而使用ANSI编码却没啥问题,而且执行正常?

bat文件如下:
@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


如果是ANSI编码,则Java中通过
Runtime.getRuntime().exec
调用正常!
但是,如果编码是UTF-8,则提示如下错误:


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' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
请按任意键继续. . .


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

3 个解决方案

#1


天朝用户windows一把但是GBK编码,只不过说成是ansi,用utf-8当然不行咯,你试下gbk

#2


保存bat时修改编码

#3


用定时器设计的门铃

#1


天朝用户windows一把但是GBK编码,只不过说成是ansi,用utf-8当然不行咯,你试下gbk

#2


保存bat时修改编码

#3


用定时器设计的门铃