该应用程序在以英语设置 DB2 的 Windows 计算机上运行良好,因为需要验证执行的命令输出,例如
> 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 命令以其语言生成输出,例如日 native
インスタンス?Eアタッチ?﨣・インスタンス?Eサ?[バ?[ = DB2/NT 10.5.5 許可 ID = DB2ADMIN ・?[カル?Eインスタンス別名 = DB2
那么,如何修改该语言才能像英语一样正常工作呢? 或者命令的输出只能以英文生成吗?
最佳答案
您似乎选择了一种不可靠的方法来确定外部程序的成功(或失败)。除了您正在处理的语言问题之外,尝试保存和解析程序输出还可能存在其他问题。
检查外部程序结果的更好方法是查看其退出代码。按照惯例,大多数程序(包括 DB2 CLP)在成功结束时返回 0,如果出现某种问题则返回不同的值。您可以找到more information in the manual 。
当从Java执行外部程序时,可以使用Process.exitValue()
获取其退出代码。
关于java - 在日语/中文机器上验证 DB2 命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36906594/