Chinaunix
标题:
請問如何知道某個漢字在AS400裡的內碼?
[打印本页]
作者:
forgot2000
时间:
2008-05-07 09:28
标题:
請問如何知道某個漢字在AS400裡的內碼?
比如“找不到”這三個漢字,在AS400裡是如何存放的?請問有什麼快捷的辦法知道其內碼呢?是按照16進制的EBCDIC碼加上前導0E,和後導0F組成嗎?實際是怎麼存放的?
[
本帖最后由 forgot2000 于 2008-5-10 08:32 编辑
]
作者:
qingzhou
时间:
2008-05-07 09:52
“找不到”是3个汉字,在400存放结构:(OE)XXXXXX (OF),共占用8个字节,我们在DDS定义O型字段存放中文记录。
其中一个汉字占用2个字节,加上前导符OE和后导符OF各占一个字节。
内码我也不是很清楚,查查DDS参考手册看看是否有相关内容。
作者:
forgot2000
时间:
2008-05-07 14:00
但如何查到某個漢字的內碼呢?有什麼好辦法嗎?
作者:
i.am.junlei.li
时间:
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写成工具,也挺容易的;看您自己的需要了。
作者:
MUSIC168
时间:
2008-05-09 14:52
或者写在一个数据库中,然后DSPPFM,选择F10(显示16进制)
作者:
forgot2000
时间:
2008-05-10 08:31
沒有更好更快的辦法嗎?還要寫程序,不嫌太麻煩了嗎?
作者:
MUSIC168
时间:
2008-05-12 09:46
不用写程序,你随便建一个pf(一个字段,需要多长自己看着办),用UPDDTA录入你想知道内码的中文,存盘退出,再DSPPFM,按F10进入十六进制模式即可
作者:
forgot2000
时间:
2008-05-12 10:25
我自己試出了最簡單的辦法了,不過要求AS400能支持SQL,用Strsql指令進入Enter SQL Statements,敲入select hex(' 找不到 ') from sysibm/sysdummy1 即可,謝謝大家,也把此經驗分享。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2