delphi 汉字的编码 转换

delphi 汉字的编码 转换  

2009-10-07 21:57:00|  分类: delphi |  标签: |字号 订阅

 

 

━━━━━━━━━━━━━━━━━━━━━━━━━━

var

Str:String;

begin

Str:='张';

Caption:=IntToHex(PWord(@Str[1])^,4);

end;

━━━━━━━━━━━━━━━━━━━━━━━━━━

这样也行

a:='我';

caption:=IntToStr(ord(a[1]))+IntToStr(ord(a[2]));

━━━━━━━━━━━━━━━━━━━━━━━━━━

Caption:=IntToHex(PWord(@Str[1])^,4);

   得到的是16进制的代码

caption:=IntToStr(ord(a[1]))+IntToStr(ord(a[2]));

得到的是10进制的代码!

不过好像应该是IntToStr(ord(a[2]))+IntToStr(ord(a[1])); 换一下位置!

━━━━━━━━━━━━━━━━━━━━━━━━━━

汉字就是unicode,delphi里面有widestring类型,可以立即使用

var

s: widestring;

i: integer;

begin

s := 'I am 中国人';

for i := 1 to length(s) do

    showmessage(inttostr(ord(s[i])));

end;

标准的写法,韩文,日文都可以这样处理。

━━━━━━━━━━━━━━━━━━━━━━━━━━

要比较汉字, 你只要将这两个字节一一对比, 两个字节都相同,当然是一个汉字了。

一个汉字由两个字节组成,要判断连续的两个字节是否汉字,

关键是看其第一个字节是否满足 >=$a0 条件, 这个条件对GBK汉字都适用

而如果一个汉字是GB2312中定义的最常用的6763个汉字,

则第一个字节和第二个节字都必须满足>=$a0 条件的条件

showmessage(chr($CB)+chr($CE)); //显示 宋 字

宋字的区位码是: 4346

宋字的国标码是: CBCE    (16进制)

另外来几个

showmessage(chr($B5)+chr($CB)); //显示 邓 字

showmessage(chr($D0)+chr($A1)); //显示 小 字

showmessage(chr($C6)+chr($BD)); //显示 平 字

━━━━━━━━━━━━━━━━━━━━━━━━━━

to tosleep:

uses widechar(ord(s[i]))

simple example:

var

c1: widechar;

c2: widechar;

i: integer;

s: widestring;

begin

s := '汉';

c1 := s[1];

i := ord(c1);

c2 := widechar(i);

showmessage(c2);

end;

奇怪上面个别人的发言,windows和delphi都已经有了对unicode的支持,为什么不用呢?

━━━━━━━━━━━━━━━━━━━━━━━━━━

【delphi类型转换 asc与char】

ord(char) = asc

chr(asc) = char

inttohex(int,1) = hex (string)

使用AStr[i]取AStr:String中的第i个字符时需要注意的事项:

这里i表示第i个字符,并不是通常的0表示第1个,i表示第i+1个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值