起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 349|回复: 10

如何取得汉字的机内码[问题]

[复制链接]
发表于 2007-9-7 15:42:59 | 显示全部楼层 |阅读模式
有一个String类型变量Hanzi(假设为: 安平)
Hanzi[1]值是: 安
word(Hanzi(1))值是: 23433,是unicode码
Hanzi[2]值是: 平
word(Hanzi(2))值是: 20828,是unicode码
为什么X3中是这个结果,而在delphi中就不是(Hanzi[1], Hanzi[2]分别是机内码的高、低字节)
因此,我认为X3中汉字使用unicode码表示,而delphi中是用机内码表示
我想取得汉字的机内码,求教
回复

使用道具 举报

 楼主| 发表于 2007-9-7 15:48:28 | 显示全部楼层

这是源码

//返回首字母
function   TSY_YXZT1_BD.GetCharInd(zzchar:string):char;
  begin
      case   WORD(zzchar[1])   shl   8+WORD(zzchar[2])   of
          $B0A1..$B0C4:result:='A';
          $B0C5..$B2C0:result:='B';
          $B2C1..$B4ED:result:='C';
          $B4EE..$B6E9:result:='D';
          $B6EA..$B7A1:result:='E';
          $B7A2..$B8C0:result:='F';
          $B8C1..$B9FD:result:='G';
          $B9FE..$BBF6:result:='H';
          $BBF7..$BFA5:result:='J';
          $BFA6..$C0AB:result:='K';
          $C0AC..$C2E7:result:='L';
          $C2E8..$C4C2:result:='M';
          $C4C3..$C5B5:result:='N';
          $C5B6..$C5BD:result:='O';
          $C5BE..$C6D9:result:='P';
          $C6DA..$C8BA:result:='Q';
          $C8BB..$C8F5:result:='R';
          $C8F6..$CBF9:result:='S';
          $CBFA..$CDD9:result:='T';
          $CDDA..$CEF3:result:='W';
          $CEF4..$D188:result:='X';
          $D1B9..$D4D0:result:='Y';
          $D4D1..$D7F9:result:='Z';
      else
          result := upcase(zzchar[1]);
      end;
  end;
回复 支持 反对

使用道具 举报

发表于 2007-9-7 18:10:45 | 显示全部楼层
试试byte(Hanzi(1))
回复 支持 反对

使用道具 举报

发表于 2007-9-11 09:18:57 | 显示全部楼层
??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-11 09:30:22 | 显示全部楼层
不可以呀,你试试看,delphi中一个字符串zzchar,存“安平”
“安 ”这个字在delphi中,zzchar[1]是#176,zzchar[2]是#178,WORD(zzchar[1])是176,WORD(zzchar[1])是178
在X3中zzchar[1]是‘安’,zchar[2]是‘平’,
但按你说的是byte(zzchar(1))是137.
紧急求助。
回复 支持 反对

使用道具 举报

发表于 2007-9-11 10:55:14 | 显示全部楼层
X3得到的是Unicode码,而Delphi中得到的是ANSI(ASCII)的码,当然不一样。
Windows有系统函数处理这两种编码的转换。可以参考一下网上的一些算法。

http://www.google.cn/search?clie ... mp;q=Unicode%20ansi
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-11 12:39:46 | 显示全部楼层
这样呀,麻烦你给写个能用的例子好吧?大家正好也学习一下。
谢谢啦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-11 14:49:20 | 显示全部楼层
怎么没有回信呀,我试了WideCharToString 函数,但还是不可以呀
回复 支持 反对

使用道具 举报

发表于 2007-9-13 09:28:14 | 显示全部楼层
恩,找了一些方法,没找到什么好办法。只能在Delphi中写一个函数得到机内码,再把机内码传入X3。直接在X3中使用好像无论怎么得到的都是Unicode码
回复 支持 反对

使用道具 举报

发表于 2007-9-18 09:18:08 | 显示全部楼层
楼主,ok没有,不反馈我结贴了:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-28 06:07 , Processed in 0.038325 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表