请教gb2312内码到unicode内码的转换函数?如果将每个汉字以widestring类型的字符存储,是否就实现了内码自动转换?这样存储到xml中的字符是否是否就是符合gb13000编码的字符?

解决方案 »

  1.   

    StringToWideChar可将string转成unicode
    至于gb13000不是很清楚
      

  2.   

    给你两个函数,实现任意多字节语言与Unicode的转换:
    function UnicodeEncode(Str: string; CodePage: integer): WideString;
    var
      Len: integer;
    begin
      Len := Length(Str) + 1;
      SetLength(Result, Len);
      Len := MultiByteToWideChar(CodePage, 0, PChar(Str), -1, PWideChar(Result), Len);
      SetLength(Result, Len - 1); //end is #0
    end;function UnicodeDecode(Str: WideString; CodePage: integer): string;
    var
      Len: integer;
    begin
      Len := Length(Str) * 2 + 1; //one for #0
      SetLength(Result, Len);
      Len := WideCharToMultiByte(CodePage, 0, PWideChar(Str), -1, PChar(Result), Len, nil, nil);
      SetLength(Result, Len - 1);
    end;比如,GB2312的代码页是936,则GB2312要转为Unicode可以这样:
    UniStr := UnicodeEncode(GBStr, 936);
    要从Unicode内码转为GB2312则可以这样:
    GBStr := UnicodeDecode(UniStr, 936);
    对于其他语言也是一样,只要知道了代码页。
      

  3.   

    代码页是什么?
    直接转成16进制的unicode内码怎么做?