as400汉字问题
1、如何在400上看一个16进制代表的汉字或者字符是什么?使用什么命令,比如说如何知道X'57D1'代表的是汉字'我'
2、如何在程序中先把一个字串转换成16进制后再处理? 比如说我想在程序中获取汉字'中国'的16进制代码'0E5BCF4D9B0F',并能保存到一个变量里
谢谢大家
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
> insert into qtemp/c1 values('OE57D1')
1 rows inserted in C1 in QTEMP.
> select c1,hex(c1) from qtemp/c1
====================================================
Display Data
Data width . . . . . . : 32
Position to line . . . . . Shift to column . . . . . .
....+....1....+....2....+....3..
C1 HEX ( C1 )
中国人 0E5BCF4D9B54CA0F4040
我 0E57D10F404040404040
******** End of data ********
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F21=Split
简单查询处理:
> create table qtemp/c1(c1 char(10) ccsid 935)
Table C1 created in QTEMP.
> insert into qtemp/c1 values(' 中国人 ')
1 rows inserted in C1 in QTEMP.
> select c1,hex(c1) from qtemp/c1
SELECT statement run complete.
==========================================================================
Display Data
Data width . . . . . . : 32
Position to line . . . . . Shift to column . . . . . .
....+....1....+....2....+....3..
C1 HEX ( C1 )
中国人 0E5BCF4D9B54CA0F4040
******** End of data ********
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F21=Split
1、如何在400上看一个16进制代表的汉字或者字符是什么?使用什么命令,比如说如何知道X'57D1'代表的是汉字'我'
方法举例:进入 STRSQL,16进制前后加 0E 0F
SELECT X'0E57D10F' FROM 你的PF
你的PF如果有记录,你就可以看到汉字'我'
2、如何在程序中先把一个字串转换成16进制后再处理? 比如说我想在程序中获取汉字'中国'的16进制代码'0E5BCF4D9B0F',并能保存到一个变量里
在AS/400里,字符串'中国'在内存中就是(C 语言描述):0x0E,0x5B,0xCF,0x4D,0x9B,0x0F
要变成16进制显示的字符串:"0E5BCF4D9B0F",是很简单的,给你一个C程序:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1??(??) = {0x0E,0x5B,0xCF,0x4D,0x9B,0x0F,0x00};
char str2??(80??);
int n, i, j, k;
n = strlen(str1);
for(i = 0, k = 0; i < n; i++)
{
j = sprintf(str2 + k, "%02X", str1??(i??));
k += j;
}
printf("str1: <%s>??/n", str1);
printf("str2: <%s>??/n", str2);
}
运行结果就是:
str1: < 中国 >
str2: <0E5BCF4D9B0F>
1)在PC上用文字編輯器看(我是用MADEDIT轉16進位來看)
DSPPFM ---->F10 可以看到編碼,然後再copy
2)用RPG,有語法,自己找吧
直接是看不出来的。。需要做转码。。要不16进制没法看!