JTOpen UserSpace阅读

时间:2016-11-14 16:27:04

标签: java ibm-midrange toolbox jtopen

使用来自JTOpen的UserSpace对象从IBMi系统读取数据时,数据是从EBCDIC转换为ASCII还是使用UserSpace.read()方法保留在EBCDIC中。

如果有,有办法告诉它不转换它或以不同的方式读取该数据。或者有没有办法获得数据的字节表示。下面是我在看到眼睛上的用户空间时所看到的,在完美的世界中,将其视为长字符串或字节数组是理想的。

24787779 5158B126 69675175 72536799
9BC7D489 85795158 B1276A96 A38580A3
A7676B37 25797288 A3A845D7 9996A674
74735496 99C7D389 8788A459 B2276866
96A38C83 A3969036 26797679 53A840D7
97D9D6E3 C5C3E3D6 D98794C9 C7C8E3E8

我尝试阅读的用户空间使用CCSID 65535(如果这很重要)。

谢谢。

2 个答案:

答案 0 :(得分:1)

A * USRSPC对象实际上只是一个命名的内存。里面的数据可以包含您想要的任何数据。它可能包含以EBCDIC编码的文本,一些ASCII代码页,UTF-8,UTF-16或任何您喜欢的内容。它可以包含一个4字节整数数组或一个矩阵或指针链接列表或任何其他非文本数据。它可能包含文本和非文本数据的混合:这完全取决于您的应用程序所写的内容。

UserSpace JT400 API不知道* USRSPC对象中包含的数据是什么,因此它只读取原始字节。您需要将这些字节读入字节数组并使用CharConverter.byteArrayToString方法将其转换为Java String对象。当然,您必须传递有效的文本CCSID,而不是65535。

答案 1 :(得分:0)

CCSID 65535告诉操作系统将数据视为二进制数据。

因此,它不会从EBCDIC转换为ASCII。

处理翻译的正确方法是使用正确的CCSID正确标记数据。

否则,请查看AS400Text类中可用的文本转换。

最后,使用JDBC,您可以设置一个连接属性来强制转换CCSID 65535.不确定标准连接是否有类似的东西(可能是AS400Text)。