• Delphi 编码转换 Unicode gbk big5(使用LCMapString设置区域后,再用API转换)


    原文:http://blog.dream4dev.com/article.asp?id=17

    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;

    function Gb2Big5(Str: string): string;
    begin
     SetLength(Result, Length(Str));
     LCMapString(GetUserDefaultLCID, LCMAP_TRADITIONAL_CHINESE,
     PChar(Str), Length(Str),
     PChar(Result), Length(Result));
     Result := UnicodeDecode(UnicodeEncode(Result, 936), 950);
    end;

    function Big52Gb(Str: string): string;
    begin
     Str := UnicodeDecode(UnicodeEncode(Str, 950), 936);
     SetLength(Result, Length(Str));
     LCMapString(GetUserDefaultLCID, LCMAP_SIMPLIFIED_CHINESE,
     PChar(Str), Length(Str),
     PChar(Result), Length(Result));
    end;
     
    function Utf8Encode(const WS: WideString): UTF8String;
    var
     L: Integer;
     Temp: UTF8String;
    begin
     Result := ';
     if WS = ' then Exit;
     SetLength(Temp, Length(WS) * 3); // SetLength includes space for null terminator
     L := UnicodeToUtf8(PChar(Temp), Length(Temp) + 1, PWideChar(WS), Length(WS));
     if L > 0 then
     SetLength(Temp, L - 1)
     else
     Temp := ';
     Result := Temp;
    end;

    http://www.vckbase.com/module/articleContent.php?id=4387

  • 相关阅读:
    Django的路由系统
    Django框架简介
    域名与网站名的区别
    简单的链接样式-CSS
    用Javascript获取样式注意的地方
    null和undefined区别
    addLoadEvent(func)详解
    《Javascrip DOM 编程艺术》学习笔记-Chapter5
    某夜凌晨4点所感所悟——未来前端路
    win7-32bit-virtualbox安装问题及解决方式
  • 原文地址:https://www.cnblogs.com/findumars/p/5624907.html
Copyright © 2020-2023  润新知