会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
小宇飞刀(xieyunc)
小宇飞刀的网络家园 | 谢祥选的技术博客
博客园
首页
新随笔
联系
订阅
管理
读写Unicode和UTF8格式文件
//---------------------------------------------- // Unit Name: FileExt.pas // Comment: 读写UTF8和UNICODE格式文件的一组函数 // Author: xieyunc 改自网络 // Date : 2007-11-23 10:47:59 //---------------------------------------------- unit FileExt; interface uses SysUtils,Windows,Types,Classes; const utf8Head: Array[0..2] of Char = (#239,#$bb,#$bf); unicodeHead: Array[0..1] of Char = (#255,#$fe); function ReadUtf8File(const filename:string):UTF8String; procedure WriteUtf8File(const filename:string;mem:Utf8String); function ReadUnicodeFile(const filename:string):WideString; procedure WriteUnicodeFile(const filename:string;mem:Widestring); implementation // read utf8 file function ReadUtf8File(const filename:string):Utf8String; var memoStream:TFileStream; buf:array of Char; begin memoStream:=TFileStream.Create(filename, fmOpenRead); try setlength(buf,memoStream.size); memoStream.ReadBuffer(buf[0], memoStream.size); //utf-8 file if (buf[0]=Utf8Head[0]) and (buf[1]=Utf8Head[1]) and (buf[2]=Utf8Head[2]) then begin FillChar(buf, SizeOf(buf), #0); memoStream.Seek(3,soFromBeginning); setlength(buf,memoStream.size-3); memoStream.ReadBuffer(buf[0], memoStream.size-3); result:=Utf8String(buf); exit; end else result:=UTF8Encode(WideString('文件不是UTF8格式!')); finally memoStream.Free; end; end; // read unicode file function ReadUnicodeFile(const filename:string):WideString; var memoStream:TFileStream; buf:array of Char; begin memoStream:=TFileStream.Create(filename, fmOpenRead); try setlength(buf,memoStream.size); memoStream.ReadBuffer(buf[0], memoStream.size); //unicode file if (buf[0]=UnicodeHead[0]) and (buf[1]=UnicodeHead[1]) then begin FillChar(buf, SizeOf(buf), #0); memoStream.Seek(2,soFromBeginning); setlength(buf,memoStream.size-2); memoStream.ReadBuffer(buf[0], memoStream.size-2); result:=PWideChar(buf); exit; end else result:=WideString('文件不是UNICODE格式!'); finally memoStream.Free; end; end; procedure WriteUnicodeFile(const filename:string;mem:Widestring); var wms:TMemoryStream; begin wms:=TMemoryStream.Create; wms.WriteBuffer(unicodeHead,length(unicodeHead)); wms.WriteBuffer(PChar(mem)^,length(mem)*2); wms.SaveToFile(filename); wms.Free; end; procedure WriteUtf8File(const filename:string;mem:Utf8String); var wms:TMemoryStream; begin wms:=TMemoryStream.Create; wms.WriteBuffer(utf8Head,length(utf8Head)); wms.WriteBuffer(pchar(mem)^,length(Ansistring(mem))); wms.SaveToFile(filename); wms.Free; end; end.
直接下载单元文件FileExt.pas
点击这里下载文件: FileExt.rar
谢祥选【小宇飞刀(xieyunc)】
posted @
2009-05-02 10:28
小宇飞刀
阅读(
114
) 评论(
0
)
编辑
收藏
举报
努力加载评论中...
刷新页面
返回顶部
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
公告
点击右上角即可分享
编程助手
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步