下面是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;

解决方案 »

  1.   

    体操作系统下,
    对GB2312,把 MultiByteToWideChar 的第一個參數傳入 936,得到的不是UNICODE,而是GBK的简体
    同样,对Big5,传入950,得到的也是GBK的繁体,不是UNICODE,
    只有把结果再用UTF8Encode函数,转一下,才得到UNICODE(UTF8),
    你把结果放到一个htm文件,在IE里试试就知道了,套用不同的编码,看到不一样的乱码在简体系统,转成GBK的繁体,CharSet用Default就能显示“繁体”了,但由于这个“繁体”是BGK的“繁体”,拿到繁体操作系统(Big5)下,一样会是乱码如果用UTF8,两边的操作体统应该不会乱了吧,但delphi如何显示UTF8呢?是设CharSet吗?好像不是?
      

  2.   

    我要的是unicode 到gb编码啊
      

  3.   

    function DecodeChinese(Inputstr:String):String;
    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;