棘手的转码问题 EBCDIC to ASCII
主机环境V5R4
UserProfile 1388环境下,生成一个PF,Update一个字符“"进去,DSPPFM看到对应的EBCDIC码是”B2",最终通过一个第三方软件传输到Windows上,得到的是乱码,对应的ASCII码是"DA".
UserProfile 037环境下,Update一个字符“"进去PF,DSPPFM看到对应的EBCDIC码是”E0",通过同一个第三方软件传输到Windows上,得到的是正确的"",对应的ASCII码是"5C".
现在的情况是这个PF file是由前置系统(Windows)通过Socket方式上到AS400的,所有的“"都被转换成"B2",最后出去的时候全部变成乱码。
不知是""这个字符有这个问题。~,$,^都有这个情况发生。
我猜测400的转换和QSYS和QUSRSYS下面的TBL有关系,但不知道系统什么情况下用到这些表,问了IBM也没有好的答案,Faint!
望高手解答!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
其实修改第三方软件转码表的工作已经好了。但这只能解决已发现有问题的code。如果知道整个机制和所有用到的转换表,就可以做充分完全的测试。一次性把所有有问题的都改掉。
不明白的是,为什么不同CodePage 环境下输入相同的符号,在As400上实际生成的code竟然不同。IBM又是依靠什么判断条件,又是用到了哪张系统表做的转换。
如果仅是因为显示问题,把5250 SESSION的主机代码页修改为1388中文扩展即可.
如果是转换,的确需要写个工具来实现.这边给客户实施也是通过自行写的程序来实现.
GBK 有23780 个汉字,二分法查表或者公式法都可以转换
回复 5# ux400
EBCDIC - ASC 那256个字符转换比较容易,可是不要忘记还有几千个汉字呢。
PCOMM 输入这几个特殊字符是有CODEPAGE的问题
socket 只是通讯传输信息的方式,转码是谁的程序完成的?
例如 PC程序A 与 AS/400 程序 B 通过 socket 通讯,既可以使用 EBCDIC 编码传输信息(即由A完成 ASCII -> EBCDIC 转码),也可以使用 ASCII 编码传输信息(即由B完成 ASCII -> EBCDIC 转码)。不管是A也好B也好,谁负责转码,谁就要满足你的要求才行。
我自己写过转码程序,通过查表转换,通用的C函数,在PC上用VC++编译,在AS/400上用CRTBNDC编译,在UNIX上用cc编译,一点也不棘手。
回复 1# beetleyuan
我的公司对于转码有现成的软件可以解决你的问题。如果你们单位原意支付费用,这个完全不是问题。
你可以发电子邮件给我联系 franliu@yahoo.com.
回复 1# beetleyuan
前面写错了:是Pcom CodePage 037和1388环境下。