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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值