━━━━━━━━━━━━━━━━━━━━━━━━━━ 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个。 |