ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

应该使用什么代码页/字符集来解释从MVS系统到Java环境的数据?

2019-12-10 17:00:20  阅读:285  来源: 互联网

标签:zos encoding character-encoding codepages java


我遇到了一个有趣的问题(与遗留系统进行交互时通常是这种情况).我正在开发一个可以接收来自各种系统的请求的应用程序(当前在x86 Linux或Windows系统上运行),其中一个是MVS系统.

我试图确定应该使用哪个代码页/字符集来解释来自MVS系统的请求数据.

过去,我曾使用’cp500′(IBM-500)来解释z / OS系统的字节日期,但是我担心由于MVS有点遗留系统,而且由于IBM似乎改变了主意,对于要使用的编码方式(必须有数十种EBCDIC编码),如果保持一致,则cp500可能不是正确的编码.

在Java字符集上找到的最佳资源是:http://mindprod.com/jgloss/encoding.但是,从该站点以及IBM Infocenters,我无法获得明确的答案.

编辑:从我对Pax的回复中添加以下内容:

在我的问题中,请求数据的来源存在一个明显的漏洞.在这种情况下,数据的起源是通过Websphere MQ接口实现的. Websphere MQ确实具有转换为正确编码的功能,但是仅用于使用MQMessage.readString()读取数据,此功能已被弃用.我更喜欢使用它,但是我使用的是专有的接口框架,在该接口框架中,我无法更改从MQQueue读取消息的方式,该方法直接从Queue读取字节,因此我只能处理句柄.

最终答案:我想跟进此事.原来正确的字符集确实是cp500(IBM-500).但是,我觉得结果可能会有所不同.给其他遇到相同问题的人的提示:

利用Charset.availableCharsets();.这将为您提供运行时支持的字符集的映射.我遍历了这些集合,并打印出我的字节数据,并将其转换为该字符集.尽管它没有给我我想要的答案(主要是因为传入的数据无法读取),但我认为它可能对其他人有所帮助.

有关支持的字符集的列表,请参阅:http://mindprod.com/jgloss/encoding.

最后,尽管我尚未确认这一点,但请确保您使用的是正确的JRE.我认为IBM Runtimes比OpenJDK或Sun的Runtimes支持更多的EBCDIC字符集.

解决方法:

“ MVS有点旧系统”?哈!对于可靠性是首要考虑因素的应用,它仍然是首选的操作系统.现在开始您的问题:-)

这完全取决于生成数据的内容.例如,如果您只是从主机下载文件,则FTP协商可能会处理它.但是,既然您提到Java,它可能是通过JDBC连接到DB2 / z,并且JDBC驱动程序将很好地处理它(如果使用的是IBM自己的JRE而不是Sun版本,那就更好了).

主机上的EBCDIC本身具有许多不同的编码,因此您至少需要让我们知道数据来自何处. DB2的最新版本在将Unicode存储在数据库中没有问题,这可以减轻您的所有麻烦.

第一项任务,找出数据来自何处,并从SysProg获取编码(如果未自动处理).

更新:

安德鲁,根据您添加的文字(您声明无法使用提供的翻译),您将不得不使用手动方法.您需要标识数据源并从中获取CCSID.然后手动进行Unicode(如果不是Unicode,则使用您正在使用的任何代码页)之间的转换.

CCSID 500是EBCDIC International的默认代码页(无欧元),但这些机器在全球范围内使用. z / OS转换服务是您通常在大型机上进行转换的方式.

尽管this是iSeries页面,但是它列出了大量CCSID及其字形,它们也适用于大型机.

您可能只需要弄清楚您使用的是CCSID 500还是37(或外语版本之一),并使用Unicode CCSID 1208进行映射.您的SysProg就能告诉您哪个.如果您在一家美国公司工作,则可能是500或37,但是IBM花费了大量精力来支持多个代码页.当他们所有的大型机软件默认都存储并使用Unicode时,我会感到很高兴,它将使事情变得更加轻松.

标签:zos,encoding,character-encoding,codepages,java
来源: https://codeday.me/bug/20191210/2103145.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有