怎样才能将Unicode 转换为 GB2321 ???(10分)

  • 主题发起人 主题发起人 kmwap
  • 开始时间 开始时间
K

kmwap

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样才能将Unicode 转换为 GB2321 ???
 
Win2000中自带一个工具软件:代码转换工具
「开始」菜单/程序/附件/代码转换工具
 
记事本也可以,选择文件类型

-----
http://www.8421.org
 
我是说在自已编写的时候???
 
AnsiChar 这是标准的1字节的ANSI字符
WideChar 这是2字节的Unicode字符
 
UNICODE 码是微软提出的解决多国字符问题的多字节等长编码,
它对英文字符采取前面加“0”字节的策略实现等长兼容。
如 “A” 的 ASCII 码为0x41,UNICODE 就为0x00,0x41。
利用特殊的工具各种编码之间可以互相转换。
 
没有用过这段代码,不知道怎么样!
看你能否反写回去!
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;
 
function UnicodeToAnsi(Unicode: string):string;
var
s:string;
i:integer;
j,k:string[2];

function ReadHex(AString:string):integer;
begin
Result:=StrToInt('$'+AString)
end;

begin
i:=1;
s:='';
while i<Length(Unicode)+1 do begin
j:=Copy(Unicode,i+2,2);
k:=Copy(Unicode,i,2);
i:=i+4;
s:=s+Char(ReadHex(j))+Char(ReadHex(k));
end;
if s<>'' then
s:=WideCharToString(PWideChar(s+#0#0#0#0))
else
s:='';
Result:=s;
end;
 

Similar threads

回复
0
查看
838
不得闲
D
回复
0
查看
755
DelphiTeacher的专栏
D
D
回复
0
查看
794
DelphiTeacher的专栏
D
D
回复
0
查看
627
DelphiTeacher的专栏
D
后退
顶部