zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    面试中你能做到随机应变吗? 沧海
    QQ只是一场意外 沧海
    面 试 中 要 慎 言 沧海
    你会应对这些面试题吗? 沧海
    面 试 小 技 巧 沧海
    面试抓住最初三分钟至关重要 沧海
    面试的十二种高级错误 沧海
    几种有难度的面试 沧海
    面试技巧: 轻松过关10种方法 沧海
    面 试 细 节 一 点 通 沧海
  • 原文地址:https://www.cnblogs.com/findumars/p/5624907.html
Copyright © 2011-2022 走看看