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

来源:互联网 发布:浙江证券软件下载 编辑:程序博客网 时间:2024/06/16 14:43

{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;

0 0
原创粉丝点击