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 个字符长。不知何故,调试时我可以看到以下内容

debugging screen

所以你可以看到一个值有两个字符,我认为这是因为 Eclipse 编码不同,因为它是用 273 编码的。我稍后会解释这个问题。

通常 getValue() 方法会返回调试时无法读取的内容,如下所示:

debugging another encoded value

正如你所见,它是一个正方形 :)

这里的问题是我们坚持这一点,这会导致 DB2 表上出现奇怪的行为,我的假设是发生这种情况是因为 "\n" 在 sql DB 中会导致一个新行。如果我错了,请纠正我。持久值是从 IBM 机器中选择的,它导致 37 个字符,而不是预期的 21 个。我必须补充一点,它查看十六进制值。

所以我的问题是是否有另一种方法来实现我的目标,即通过解码字符集 273 中的字节数组来创建一个新字符串?或者如果我遗漏了什么或类似的东西?也许无论我如何编码/解码它都会导致完全相同的结果,因为这正是 21 在 273 中解码的样子?

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)