java在Japenese/Chinese机器上验证DB2命令的输出
该应用程序在Windows机器上运行良好,其中DB2是用英语设置的,因为需要验证执行的命令输出,如
> db2 attach to DB2 user db2admin using xxxxxx
Instance Attachment Information
Instance server = DB2/NT64 10.5.1
Authorization ID = DB2ADMIN
Local instance alias = DB2
实际上,上面的输出被重定向到一个文本文件中,然后由Java代码验证为
String message = Utils.readFile(filePath);
message = message.trim().replaceAll("\\s+", " ");
String upperStr = message.toUpperCase();
if (upperStr.indexOf("INSTANCE ATTACHMENT INFORMATION") != -1
&& upperStr.indexOf("AUTHORIZATION ID") != -1)
return "SUCCESS";
else
return "FAILURE";
但问题是:在日语/汉语机器上,DB2命令以其语言生成输出,例如日语机器
インスタンス?Eアタッチ?﨣・インスタンス?Eサ?[バ?[ = DB2/NT 10.5.5 許可 ID = DB2ADMIN ・?[カル?Eインスタンス別名 = DB2
那么,如何修改该语言,使其像英语一样正常工作呢? 或者命令的输出只能用英语生成
# 1 楼答案
似乎您选择了一种不可靠的方式来确定外部程序的成功(或失败)。除了您正在处理的语言问题外,在尝试保存和解析程序输出时还有其他可能的问题
检查外部程序结果的更好方法是查看其退出代码。按照惯例,大多数程序(包括DB2CLP)在成功结束时返回0,如果出现某种问题,则返回不同的值。你可以找到more information in the manual
从Java执行外部程序时,可以使用^{} 获取其退出代码