免费注册 查看新帖 |

Chinaunix

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

as400汉字问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-04 15:57 |只看该作者 |倒序浏览
1、如何在400上看一个16进制代表的汉字或者字符是什么?使用什么命令,比如说如何知道X'57D1'代表的是汉字'我'
2、如何在程序中先把一个字串转换成16进制后再处理? 比如说我想在程序中获取汉字'中国'的16进制代码'0E5BCF4D9B0F',并能保存到一个变量里

谢谢大家

论坛徽章:
0
2 [报告]
发表于 2009-11-04 22:33 |只看该作者

回复 #1 紫衫威龙 的帖子

直接是看不出来的。。需要做转码。。要不16进制没法看!

论坛徽章:
0
3 [报告]
发表于 2009-11-05 23:50 |只看该作者
1)在PC上用文字編輯器看(我是用MADEDIT轉16進位來看)
   DSPPFM ---->F10 可以看到編碼,然後再copy
2)用RPG,有語法,自己找吧

论坛徽章:
0
4 [报告]
发表于 2009-11-12 10:34 |只看该作者
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>

论坛徽章:
0
5 [报告]
发表于 2009-11-12 11:02 |只看该作者
简单查询处理:

> 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

论坛徽章:
0
6 [报告]
发表于 2009-11-12 11:08 |只看该作者
> 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP