delphi utf8字符转换单元  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi utf8字符转换单元


unit util_utf8;


interface


uses Windows;


type

  UTF8String = AnsiString;


  function AnsiToWide(const S: AnsiString): WideString;

  function WideToUTF8(const WS: WideString): UTF8String;

  function AnsiToUTF8(const S: AnsiString): UTF8String;

  function UTF8ToWide(const US: UTF8String): WideString;

  function WideToAnsi(const WS: WideString): AnsiString;

  function UTF8ToAnsi(const S: UTF8String): AnsiString;


implementation


function AnsiToWide(const S: AnsiString): WideString;

var

  len: integer;

  ws: WideString;

begin

  Result:='';

  if (Length(S) = 0) then

    exit;

  len:=MultiByteToWideChar(CP_ACP, 0, pansichar(s), -1, nil, 0);

  SetLength(ws, len);

  MultiByteToWideChar(CP_ACP, 0, pansichar(s), -1, PWideChar(ws), len);

  Result:=ws;

end;


function WideToUTF8(const WS: WideString): UTF8String;

var

  len: integer;

  us: UTF8String;

begin

  Result:='';

  if (Length(WS) = 0) then

    exit;

  len:=WideCharToMultiByte(CP_UTF8, 0, PWideChar(WS), -1, nil, 0, nil, nil);

  SetLength(us, len);

  WideCharToMultiByte(CP_UTF8, 0, PWideChar(WS), -1, pansichar(us), len, nil, nil);

  Result:=us;

end;


function AnsiToUTF8(const S: AnsiString): UTF8String;

begin

  Result:=WideToUTF8(AnsiToWide(S));

end;


function UTF8ToWide(const US: UTF8String): WideString;

var

  len: integer;

  ws: WideString;

begin

  Result:='';

  if (Length(US) = 0) then

    exit;

  len:=MultiByteToWideChar(CP_UTF8, 0, pansichar(US), -1, nil, 0);

  SetLength(ws, len);

  MultiByteToWideChar(CP_UTF8, 0, pansichar(US), -1, PWideChar(ws), len);

  Result:=ws;

end;


function WideToAnsi(const WS: WideString): AnsiString;

var

  len: integer;

  s: AnsiString;

begin

  Result:='';

  if (Length(WS) = 0) then

    exit;

  len:=WideCharToMultiByte(CP_ACP, 0, PWideChar(WS), -1, nil, 0, nil, nil);

  SetLength(s, len);

  WideCharToMultiByte(CP_ACP, 0, PWideChar(WS), -1, pansichar(s), len, nil, nil);

  Result:=s;

end;


function UTF8ToAnsi(const S: UTF8String): AnsiString;

begin

  Result:=WideToAnsi(UTF8ToWide(S));

end;


end.



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.12355613708496 seconds