【备忘】,Ansi与Unicode编码互转

来源:互联网 发布:中山大学 知乎 编辑:程序博客网 时间:2024/06/06 08:45

前段时间用D7开发到调用XE5的开发的动态库,然后在网上找到这2个转码函数,D7亲测可用,只是时间过去了,忘记从哪转载的了,在此表示对原创者抱歉了。

纪念以备不时之需,不过低版本Ansi编码传参到高版本unicode编码,参数定义为widestring,好像不必转码。只是我人懒,懒得试了。


Ansi转Unicode

function AnsiToUnicode(Str: String): WideString;  var    LWideChar: PWideChar;    Len: Integer;  begin    Len := (Length(Str) + 1) * 2;    GetMem(LWideChar, Len);    ZeroMemory(LWideChar, Len);    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, PChar(Str), Length(Str), LWideChar, Len);    Result := LWideChar;    FreeMem(LWideChar);  end;

Unicode转Ansi

function UnicodeToAnsi(s:WideString):string;  var    lpChar:PChar;    len:integer;    begin    len := Length(s) * 2;    GetMem(lpChar,len);    ZeroMemory(lpChar, len);    WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, PWideChar(s),    Length(s),lpChar,Len, nil, nil );    Result := lpChar;    FreeMem(lpChar);  end;



0 0
原创粉丝点击