如何解决Java - (273 IBM) 字符集在解码 21 时返回 \n
public String getValue() {
try {
String stringValue = new String(toBytes(fieldGetter.get()),273);
return String.format("2.2s",stringValue);
}
catch (UnsupportedEncodingException e) {
throw new IllegalStateException("Could not create decimal field with given charset",e);
}
}
因此 fieldGetter.get() 基本上是“21”,而 273 字符集用于 IBM / PL1。 格式一目了然。
getValue() 返回“\n”,这很奇怪,因为从我理解我定义的格式应该是 2 个字符长。不知何故,调试时我可以看到以下内容:
所以你可以看到一个值有两个字符,我认为这是因为 Eclipse 编码不同,因为它是用 273 编码的。我稍后会解释这个问题。
通常 getValue() 方法会返回调试时无法读取的内容,如下所示:
正如你所见,它是一个正方形 :)
这里的问题是我们坚持这一点,这会导致 DB2 表上出现奇怪的行为,我的假设是发生这种情况是因为 "\n" 在 sql DB 中会导致一个新行。如果我错了,请纠正我。持久值是从 IBM 机器中选择的,它导致 37 个字符,而不是预期的 21 个。我必须补充一点,它查看十六进制值。
所以我的问题是是否有另一种方法来实现我的目标,即通过解码字符集 273 中的字节数组来创建一个新字符串?或者如果我遗漏了什么或类似的东西?也许无论我如何编码/解码它都会导致完全相同的结果,因为这正是 21 在 273 中解码的样子?
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。