下面是gb转化为uicode的编码,如何反过来写呢
function Encode2(var s:WideString):String;
var
i,len:Integer;
cur:Integer;
t:String;
begin
Result:='';
len:=Length(s);
i:=1;
while i<=len do
begin
cur:=ord(s[i]);
//BCD转换
FmtStr(t,'%4.4X',[cur]);
Result:=Result+t;
inc(i);
end;
end;
function Encode2(var s:WideString):String;
var
i,len:Integer;
cur:Integer;
t:String;
begin
Result:='';
len:=Length(s);
i:=1;
while i<=len do
begin
cur:=ord(s[i]);
//BCD转换
FmtStr(t,'%4.4X',[cur]);
Result:=Result+t;
inc(i);
end;
end;
对GB2312,把 MultiByteToWideChar 的第一個參數傳入 936,得到的不是UNICODE,而是GBK的简体
同样,对Big5,传入950,得到的也是GBK的繁体,不是UNICODE,
只有把结果再用UTF8Encode函数,转一下,才得到UNICODE(UTF8),
你把结果放到一个htm文件,在IE里试试就知道了,套用不同的编码,看到不一样的乱码在简体系统,转成GBK的繁体,CharSet用Default就能显示“繁体”了,但由于这个“繁体”是BGK的“繁体”,拿到繁体操作系统(Big5)下,一样会是乱码如果用UTF8,两边的操作体统应该不会乱了吧,但delphi如何显示UTF8呢?是设CharSet吗?好像不是?
var
Buf:array[0..70] of widechar;
len,i:integer;
begin
len := round(Length(InputStr)/4)-1;
for i:=0 to Len do
begin
buf[i] := widechar(StrToint('$'+copy(InputStr,4*i+1,4)));
end;
buf[i] := #0;
result := WideCharToString(Buf)
end;