免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3049 | 回复: 7
打印 上一主题 下一主题

請問如何知道某個漢字在AS400裡的內碼? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-07 09:28 |只看该作者 |倒序浏览
比如“找不到”這三個漢字,在AS400裡是如何存放的?請問有什麼快捷的辦法知道其內碼呢?是按照16進制的EBCDIC碼加上前導0E,和後導0F組成嗎?實際是怎麼存放的?

[ 本帖最后由 forgot2000 于 2008-5-10 08:32 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-05-07 09:52 |只看该作者
“找不到”是3个汉字,在400存放结构:(OE)XXXXXX (OF),共占用8个字节,我们在DDS定义O型字段存放中文记录。

其中一个汉字占用2个字节,加上前导符OE和后导符OF各占一个字节。

内码我也不是很清楚,查查DDS参考手册看看是否有相关内容。

论坛徽章:
0
3 [报告]
发表于 2008-05-07 14:00 |只看该作者
但如何查到某個漢字的內碼呢?有什麼好辦法嗎?

论坛徽章:
0
4 [报告]
发表于 2008-05-07 15:20 |只看该作者

回复 #3 forgot2000 的帖子

办法有很多呢;如果您最熟悉RPGLE,不妨这样:
1) 写个2行的RPGLE程序,如下:
d mm              s              8a   inz('你好')                  
c                   seton                                          lr
2) 使用标准调试器(STRDBG),BREAK 2
3) CALL 小程序, 使用EVAL调试命令 EVAL MM:X,您会看到类似下面的输出:
00000     0E52E24D C20F4040 ........ ........   - .

于是可以知道'你好'实际上是x'0E52E24DC20F'
* 另外,关于DBCS字符delimiter的事(即0x0E, 0x0F),就如qingzhou前辈所说。
* 更多呢,如果您想用RPG或其他HLL写成工具,也挺容易的;看您自己的需要了。

论坛徽章:
0
5 [报告]
发表于 2008-05-09 14:52 |只看该作者
或者写在一个数据库中,然后DSPPFM,选择F10(显示16进制)

论坛徽章:
0
6 [报告]
发表于 2008-05-10 08:31 |只看该作者
沒有更好更快的辦法嗎?還要寫程序,不嫌太麻煩了嗎?

论坛徽章:
0
7 [报告]
发表于 2008-05-12 09:46 |只看该作者
不用写程序,你随便建一个pf(一个字段,需要多长自己看着办),用UPDDTA录入你想知道内码的中文,存盘退出,再DSPPFM,按F10进入十六进制模式即可

论坛徽章:
0
8 [报告]
发表于 2008-05-12 10:25 |只看该作者
我自己試出了最簡單的辦法了,不過要求AS400能支持SQL,用Strsql指令進入Enter SQL Statements,敲入select hex(' 找不到 ') from sysibm/sysdummy1 即可,謝謝大家,也把此經驗分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP