━━━━━━━━━━━━━━━━━━━━━━━━━━
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个。
|
请发表评论