首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTOpen UserSpace Read

JTOpen UserSpace Read
EN

Stack Overflow用户
提问于 2016-11-15 00:27:04
回答 2查看 220关注 0票数 0

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

如果它这样做了,有没有一种方法可以告诉它不要转换它,或者有一种不同的方式来读取数据。或者有没有办法只获取数据的字节表示。下面是我在眼睛上看到的用户空间,在一个完美的世界中,将其作为一个长字符串或字节数组是理想的。

代码语言:javascript
复制
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。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-11-17 10:26:37

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

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

票数 1
EN

Stack Overflow用户

发布于 2016-11-15 00:41:53

CCSID 65535告诉OS将数据视为二进制。

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

处理转换的正确方法是用正确的CCSID正确地标记数据。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40593409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档