Unicode,GB,GBK转换

  • 主题发起人 主题发起人 import
  • 开始时间 开始时间
I

import

Unregistered / Unconfirmed
GUEST, unregistred user!
Unicode格式:
我们都知道,Windows2000的记事本,可以保存数据为Unicode的格式,那么在记事本中输入的文字,如何保存到文件里面呢?
原来,Unicode的文本和数据,在开始的时候,会有两个字节的标记:FF FE,如果一个Txt文件,开头两个字节是FF FE,那么记事本就认为它是Unicode的格式!此后,每一个符号数据都是以两个字节来保存的!因此,如果你输入了ab两个字母,那么文件的长度就是:2 + 4=6Byte!
MultiByteToWideChar
WideCharToMultiByte
把一个数字如8bd5变成Unicode字符:
Result:=WideChar($8bd5)
 
function GB2Unicode(GB:string):string;
var
s: string;
i, j, k: integer;
a: array [1..1000] of char;
begin
s:='';
StringToWideChar(GB, @(a[1]), 500);
i:=1;
while ((a<>#0) or (a[i+1]<>#0)) do begin
j:=Integer(a); k:=Integer(a[i+1]);
s:=s+Copy(Format('%X ',[k*$100+j+$10000]) ,2,4);
i:=i+2;
end;
Result:=s;
end;
简体和繁体转换:
请参看MSDN的API
LCMapString
它可以实现GB和big5和Unicode之间的转换,不需要什么对照表。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
677
SUNSTONE的Delphi笔记
S
S
回复
0
查看
636
SUNSTONE的Delphi笔记
S
S
回复
0
查看
886
SUNSTONE的Delphi笔记
S
后退
顶部