本文整理自网络,侵删。
前段时间用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转Ansifunction 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;
相关阅读 >>
Delphi access violations 问题的解决之道
Delphi program name、process id、window handle、process handle 的转换函数
Delphi xe, xe10, 创建 activeform 和 activex 工程的方法
Delphi tstringlist utf8编码保存并开启bom
更多相关阅读请进入《Delphi》频道 >>