[转载]Delphi 7升级到XE2的字符串问题3——转换函数

{AnsiString与WideString互相转换函数}
function AnsiStringToWideString(Const s:AnsiString):WideString;
function WideStringToAnsiString(Const s:WideString):AnsiString;
{UTF8与WideString互相转换函数}
function UTF8StringToWideString(Const s:UTF8String):WideString;
function WideStringToUTF8String(Const s:WideString):UTF8String;
{UTF8与AnsiString互相转换函数}
function UTF8StringToAnsiString(Const s:UTF8String):AnsiString;
function AnsiStringToUTF8String(Const s:AnsiString):UTF8String;

 


{AnsiString与WideString互相转换函数}
function AnsiStringToWideString(Const s:AnsiString):WideString;
var
  iLen:Integer;
  sw  :WideString;
begin
  result := '';
  if Length(s)=0 then Exit;
  iLen := MultiByteToWideChar(CP_ACP,0,PAnsiChar(s),-1,nil,0);
  SetLength(sw,iLen-1);
  MultiByteToWideChar(CP_ACP,0,PAnsiChar(s),-1,PWideChar(sw),iLen);
  Result:=sw;
end;

function WideStringToAnsiString(Const s:WideString):AnsiString;
var
  iLen:Integer;
  sa  :AnsiString;
begin
  result := '';
  if Length(s)=0 then Exit;
  iLen:=WideCharToMultiByte(CP_ACP,0,PWideChar(s),-1,nil,0,nil,nil);
  SetLength(sa,iLen-1);
  WideCharToMultiByte(CP_ACP,0,PWideChar(s),-1,PAnsiChar(sa),iLen,nil,nil);
  Result:=sa;
end;

{UTF8与WideString互相转换函数}
function UTF8StringToWideString(Const s:UTF8String):WideString;
var
  iLen:Integer;
  sw  :WideString;
begin
  result := '';
  if Length(s)=0 then Exit;
  iLen := MultiByteToWideChar(CP_UTF8,0,PAnsiChar(s),-1,nil,0);
  SetLength(sw,iLen);
  MultiByteToWideChar(CP_UTF8,0,PAnsiChar(s),-1,PWideChar(sw),iLen);
  Result:=sw;
end;

function WideStringToUTF8String(Const s:WideString):UTF8String;
var
  iLen:Integer;
  su  :UTF8String;
begin
  result := '';
  if Length(s)=0 then Exit;
  iLen := WideCharToMultiByte(CP_UTF8,0,PWideChar(s),-1,nil,0,nil,nil);
  SetLength(su,iLen);
  WideCharToMultiByte(CP_UTF8,0,PWideChar(s),-1,PAnsiChar(su),iLen,nil,nil);
  Result:=su;
end;

{UTF8与AnsiString互相转换函数}
function UTF8StringToAnsiString(Const s:UTF8String):AnsiString;
begin
  result:=WideStringToAnsiString(UTF8StringToWideString(S));
end;

function AnsiStringToUTF8String(Const s:AnsiString):UTF8String;
begin
  Result:=WideStringToUTF8String(AnsiStringToWideString(s));
end;

posted @ 2013-04-02 00:29  Wishmeluck  阅读(145)  评论(0编辑  收藏  举报