登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 首页 >> SoftHub关联区 >> SoftHub关联区 >> 主题: [Lazarus/freepascal]在Lazarus中对字符串进行代码页转换[zt]    [最新]
[Lazarus/freepascal]在Lazarus中对字符串进行代码页转换[zt]
clq
浏览(0) - 2019-05-14 14:02:15 发表 编辑
经纬度拾取

关键字

[目前已存在于分组:]

关键字:

[2019-05-14 16:22:28 最后更新]
在Lazarus中对字符串进行代码页转换
2017年08月22日 22:29:26 池龙 阅读数:770
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/poolord/article/details/77488704

由于Lazarus基于UTF-8,因此当读写Windows建立的纯文本文件的时候,由于其中的中文使用GBK(CP936)编码,可能会出现错误。此时可使用Lazarus自带的代码页转换单元LConvEncoding对编码进行转换。

如UTF8和GBK互转

function CP936ToUTF8(const s: string): string; // Chinese
function UTF8ToCP936(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Chinese, essentially the same as GB 2312 and a predecessor to GB 18030

1
2

如指定代码页之间互转

function ConvertEncoding(const s, FromEncoding, ToEncoding: string
{$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean = false{$endif}): string;

1
2
3

注:GB18030由于包含部分四字节字符,实际其代码页CP54936是不能使用的,但是由于GB18030向下兼容目前中文Windows系统使用的GBK,而GBK又向下兼容GB2312(CP20936),所以实际操作中按CP936处理即可。




clq  2019-05-14 16:22:28 发表 编辑

//过滤并且有内容发给程序
s := Utf8ToAnsi(s);
//s := LConvEncoding.UTF8ToCP936(s);//la 下必须是这个函数, Utf8ToAnsi 是不行的


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


该采集也在以下书单中
win10api 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:


本帖子属于以下条目()

NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2017 clq, All Rights Reserved
CLQ工作室 版权所有