尝试将字节数组转换为字符串时,我会得到奇怪的字符

时间:2014-10-20 15:15:08

标签: java oracle utf-8 bytearray clob

我从oracle Clob字段读取数据,并将其存储到字节数组中。我使用的是Clob,因为varchar2的某些字段的大小不够。

我正在使用这个java代码转换字节数组

    String s1 = Arrays.toString(byteArray);
    String s2 = new String(byteArray, StandardCharsets.UTF_8).trim();

    System.out.println(s1);
    System.out.println(s2);;

s1输出为

[0, 84, 0, 1, 2, 12, -128, 0, 0, 2, 0, 0, 0, 1, 0, 0, 1, 101, -74, -97, 0, 1, -106, 20, 0, 1, 47, -101, 0, 41, 0, 41, 3, 105, 0, 1, 0, 65, 0, 84, 0, 84, 0, 82, 0, 73, 0, 66, 0, 0, 0, 0, -110, -125, 16, -93, 9, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -116, 81, 2, -62, 27, 50, 0, 50]

s2输出为 enter image description here

预期输出

ATTRIBUTE19 + ATTRIBUTE16

有人能给我一些关于结果字符串中可能导致这些奇怪字符的信息吗?

[编辑]

我还尝试将其中一个clob字段更新为1个字符' T'这是结果 enter image description here

我发现这很奇怪,因为这个字段中没有LAST字样,但其他两个字段都有。这些字段的内容是

(LAST_ENTRY == '') ? '' : $BON_AWARD_PCT_1 * $BON_BASE / 100

(LAST_ENTRY == '') ? '' : doRound($BON_AWARD_AMT_1 / $BON_BASE * 100,'0.01')^IF($BON_BASE = 0,0,$BON_AWARD_AMT_1 / $BON_BASE * 100)

0 个答案:

没有答案