Delphi Ansi与Unicode编码互转


本文整理自网络,侵删。

 
前段时间用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;

相关阅读 >>

Delphi 中相对路径与绝对路径函数

Delphi 使用onvalidate事件或onvalidating事件验证在输入字段(tedit)中输入的值

Delphi 32位程序 out of memory 内存不足时解决办法之一

Delphi 移动客户端的路径的安全正确的写法

Delphi xe 遍历指定数据库,清空各表记录

Delphi 输出用空格对齐字符串的函数

Delphi 带密匙的字符串加密解密函数(支持中文)

Delphi query1 导出csv txt

Delphi实现自我删除

Delphi string转为olevariant

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...