Delphi读写UTF-8、Unicode格式文本文件
数说明:f文件名、s写入或读取的文件内容、hs文件头、b是否读写文件头。
procedure SaveUTF(f: string; s: string; b: boolean = true);var ms: TMemoryStream; hs: string;beginif s = '' then exit; ms := TMemoryStream.Create;if b thenbegin hs := #$EF#$BB#$BF; ms.Write(hs[1], 3);end; s := AnsiToUtf8(s); ms.Write(s[1], Length(s)); ms.Position := 0; ms.SaveToFile(f); ms.Free;end; function LoadUTF(f: string; b: boolean = true): string;var ms: TMemoryStream; s, hs: string;begin Result := '';if not FileExists(f) then exit; ms := TMemoryStream.Create; ms.LoadFromFile(f);if b thenbegin SetLength(hs, 3); ms.Read(hs[1], 3);if hs <> #$EF#$BB#$BF thenbegin ms.Free; exit;end; SetLength(s, ms.Size - 3); ms.Read(s[1], ms.Size - 3);endelsebegin SetLength(s, ms.Size); ms.Read(s[1], ms.Size);end; Result := Utf8ToAnsi(s); ms.Free;end; procedure SaveUnicode(f: string; s: string; b: boolean = true);var ms: TMemoryStream; hs: string; ws: WideString;beginif s = '' then exit; ms := TMemoryStream.Create;if b thenbegin hs := #$FF#$FE; ms.Write(hs[1], 2);end; ws := WideString(s); ms.Write(ws[1], Length(ws) * 2); ms.Position := 0; ms.SaveToFile(f); ms.Free;end; function LoadUnicode(f: string; b: boolean = true): string;var ms: TMemoryStream; hs: string; ws: WideString;begin Result := '';if not FileExists(f) then exit; ms := TMemoryStream.Create; ms.LoadFromFile(f);if b thenbegin SetLength(hs, 2); ms.Read(hs[1], 2);if hs <> #$FF#$FE thenbegin ms.Free; exit;end; SetLength(ws, (ms.Size - 2) div 2); ms.Read(ws[1], ms.Size - 2);endelsebegin SetLength(ws, ms.Size div 2); ms.Read(ws[1], ms.Size);end; Result := AnsiString(ws); ms.Free;end;
转载于:https://www.cnblogs.com/shuaixf/archive/2011/10/26/2225611.html
Delphi读写UTF-8、Unicode格式文本文件相关推荐
- 未测试 Delphi读写UTF-8、Unicode格式文本文件
// UTF-8文件写入函数 procedure SaveUTFFile(const FileName: string; S: string; WriteHeader: Boolean = True) ...
- Delphi读写文本文件
文本文件读写 前言: Delphi 支持三种文件类型: 文本文件.记录文件.无类型文件. 文本文件是以行为单位进行读.写的.由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序 ...
- UTF、Unicode、ASCII及中文编码
一.Unicode缘起 Unicode是一种字符编码规范 . 1.国际标准ASCII编码 先从ASCII说起.ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits) ...
- 创建Unicode格式的INI文件
前段时间由于开发一个软件,需要调用别人的接口,虽然我的软件是Unicode编码,对方的模块也是Unicode编码,但是对方提供的接口却是Ansi接口,在非中文系统下,由于涉及到中文路径,导致Ansi和 ...
- warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失...
从同事那里拷来两个头文件,一编译就出现了这个警告. 想要消除这个警告,几个方法: (1)转换Code文件为Unicode格式: (2)在Project -> Properties -> ...
- 统计“3_人民日报语料”文本中的字符数和词数,把文件分别保存为 ansi, UTF8,UTF16,unicode 格式
统计"3_人民日报语料"文本中的字符数和词数,把文件分别保存为 ansi, UTF8,UTF16,unicode 格式; 首先,统计文件的字符数,有两种方法.第一种是将文件复制到w ...
- 解决在使用 Qt 编译项目时出现 “C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode格式以防止数据丢失“ 的警告
解决在使用 Qt 编译项目时出现 "C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode格式以防止数据丢失" 的警告 警告出现的原因:编 ...
- Linux命令之dos2unix - 将DOS格式文本文件转换成UNIX格式
用途说明 dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文件是以\r\n作为 ...
- warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失 [问题描述] Qt项目使用 VC++ 编译器出现此错误. war ...
- Qt使用MSVC编译器关闭“warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”警告的方法
Qt使用MSVC编译器关闭"warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失"警告的方法 [问 ...
最新文章
- PHP复杂度,php 常用算法和时间复杂度
- 暴雪帝国辉煌能否延续
- html出现403错误信息,网站(HTTP)出现403错误集锦,请对号入座;
- setTimeout、setInterval解刨
- 山寨机来了:小米10至尊、透明版只要688
- 深入理解python.md_从python角度,理解进程,线程,协程.md-Go语言中文社区
- 阿里推出“阿里云网盘”App;Linux 发布 29 周年​| 极客头条
- Laravel 队列发送邮件
- java如何算log_用java代码计算Log(a)b
- .net html5 微信支付接口,解析微信支付的实现方法(.NET版)
- 如何修改图片尺寸,分辨率大小,三种方式对比。
- RandomUtils 随机生成中文姓名,性别,Email,手机号,住址
- EXCHANGE 2016证书续期
- 考研数学笔记(更新中)
- 数据准备脚本:Python Pandas OR esProc SPL?
- SWIFT电文 MT940客户对账单 报文格式说明
- 中山マミ - 彼女×彼女×彼女 ~今夜はぎゅっと抱きしめてね~
- 输入90输公因数java_关于Java中的几个数论中的知识
- 【数据挖掘】数据挖掘总结 ( 贝叶斯分类器示例 ) ★
- spring mysql ssl_MySQL 使用 SSL 连接配置详解
热门文章
- GDAL查看DEM高程数据(java)
- JavaScript由浅到深【含案例源码】
- maven私服搭建:docker安装Sonatype Nexus以及寻找admin用户对应的随机初始密码
- 每天一道剑指offer-翻转单词顺序列
- ubuntu切换用户root时认证失败
- windows 64位sed.exe_32位,64位,x86,x64到底是什么关系?差距居然这么大
- python lambda表达式及用法_Python中lambda表达式的常见用法
- C语言字母标题,C语言题目!!
- python暂停和恢复_Scrapy如何暂停/恢复工作?
- Javascript:radio单击触发事件