博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi编码转换
阅读量:5876 次
发布时间:2019-06-19

本文共 2213 字,大约阅读时间需要 7 分钟。

1、Delphi 的 Utf-8 转换 - findumars - 博客园.html

 

新版的 Delphi 應該不用這麼麻煩, 據說只要直接在 AnsiString, WideString, UTF8String 之間 assign 時就會自動幫你做轉換 (沒用過, 不知道是不是真的這樣就可以).

不過... 還在用 Delphi 3/5, 所以... 只好自己來轉:

unit util_utf8; interface uses Windows; type  UTF8String = AnsiString;   function AnsiToWide(const S: AnsiString): WideString;  function WideToUTF8(const WS: WideString): UTF8String;  function AnsiToUTF8(const S: AnsiString): UTF8String;  function UTF8ToWide(const US: UTF8String): WideString;  function WideToAnsi(const WS: WideString): AnsiString;  function UTF8ToAnsi(const S: UTF8String): AnsiString; implementation function AnsiToWide(const S: AnsiString): WideString;var len: integer;    ws: WideString;beginResult:='';if (Length(S) = 0) then  exit;len:=MultiByteToWideChar(CP_ACP, 0, PChar(s), -1, nil, 0);SetLength(ws, len);MultiByteToWideChar(CP_ACP, 0, PChar(s), -1, PWideChar(ws), len);Result:=ws;end; function WideToUTF8(const WS: WideString): UTF8String;var len: integer;    us: UTF8String;beginResult:='';if (Length(WS) = 0) then  exit;len:=WideCharToMultiByte(CP_UTF8, 0, PWideChar(WS), -1, nil, 0, nil, nil);SetLength(us, len);WideCharToMultiByte(CP_UTF8, 0, PWideChar(WS), -1, PChar(us), len, nil, nil);Result:=us;end; function AnsiToUTF8(const S: AnsiString): UTF8String;beginResult:=WideToUTF8(AnsiToWide(S));end; function UTF8ToWide(const US: UTF8String): WideString;var len: integer;    ws: WideString;beginResult:='';if (Length(US) = 0) then  exit;len:=MultiByteToWideChar(CP_UTF8, 0, PChar(US), -1, nil, 0);SetLength(ws, len);MultiByteToWideChar(CP_UTF8, 0, PChar(US), -1, PWideChar(ws), len);Result:=ws;end; function WideToAnsi(const WS: WideString): AnsiString;var len: integer;    s: AnsiString;beginResult:='';if (Length(WS) = 0) then  exit;len:=WideCharToMultiByte(CP_ACP, 0, PWideChar(WS), -1, nil, 0, nil, nil);SetLength(s, len);WideCharToMultiByte(CP_ACP, 0, PWideChar(WS), -1, PChar(s), len, nil, nil);Result:=s;end; function UTF8ToAnsi(const S: UTF8String): AnsiString;beginResult:=WideToAnsi(UTF8ToWide(S));end; end.

就是直接使用 win32 的 API 來處理.

PS. 舊的 VCL 只支援 Ansi, 所以... WideString 與 UTF8String (定義與 AnsiString 相同) 並沒有辦法正確的在 VCL 中顯示.

原文:

 

2、

3、

转载于:https://www.cnblogs.com/CodeSkill/p/8093318.html

你可能感兴趣的文章
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
CDays–4 习题一至四及相关内容解析。
查看>>
L3.十一.匿名函数和map方法
查看>>
java面向对象高级分层实例_实体类
查看>>
android aapt 用法 -- ApkReader
查看>>
[翻译]用 Puppet 搭建易管理的服务器基础架构(3)
查看>>
Android -- AudioPlayer
查看>>
Python大数据依赖包安装
查看>>
Android View.onMeasure方法的理解
查看>>
Node.js 爬虫初探
查看>>
ABP理论学习之仓储
查看>>
centos7下使用yum安装mysql
查看>>
How can I set ccshared=-fPIC while executing ./configure?
查看>>
2.移植uboot-添加2440单板,并实现NOR、NAND启动
查看>>
hadoop-2.6.5安装
查看>>
vmware虚拟机里的LINUX不能上网的原因一:虚拟网卡设置
查看>>
监控摄像机的区别和分类
查看>>
Java学习——对象和类
查看>>
ElasticSearch 组合过滤器
查看>>