捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >基础知识 > 正文
24 2020.03

delphi 以指定编码操作文本文件

点击次数:115 更新时间:2020-3-24 11:31:24  【打印此页

  Windows文本文件支持4种编码格式ANSI、Unicode、Unicode big endian、UFT-8;在操作文本文件时必须以正确的编码格式打开,否则将会是乱码。

 

function WordLoHiExchange(w: word): word; register;
asm
  XCHG AL, AH
end;

{
取得文件编码 返回值 TEncoding
Windows文本文件支持4种格式:ANSI、Unicode、Unicode big endian、UFT-8
ANSI: 无格式定义 $0000;
Unicode: 前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;
UTF-8: 前两字节为EFBB;
}
function GetFileEncodeing(const Filename: string): TEncoding;
type
  TTextFormat = (tfAnsi, tfUnicode, tfBigEndianUnicode, tfUtf8);
const
  TextFormatFlag: array [tfAnsi .. tfUtf8] of word = ($0000, $FFFE, $FEFF, $EFBB);
var
  w: word;
begin
  with TFileStream.Create(Filename, fmOpenRead or fmShareDenyNone) do
  begin
    try
      Seek(0, soFromBeginning);
      Read(w, 2);
      w := WordLoHiExchange(w); // 因为是以Word数据类型读取,故高低字节互换
      if w = TextFormatFlag[tfUnicode] then
        Result := TEncoding.Unicode
      else if w = TextFormatFlag[tfBigEndianUnicode] then
        Result := TEncoding.BigEndianUnicode
      else if w = TextFormatFlag[tfUtf8] then
        Result := TEncoding.UTF8
      else
        Result := TEncoding.ANSI;
    finally
      Free;
    end;
  end;
end;

// 调用
procedure TForm1.btn1Click(Sender: TObject);
var
  Filename: string;
  Encoding: TEncoding;
begin
  Filename := 'test.txt';
  Encoding := GetFileEncodeing(Filename);
  mmo1.Text := TFile.ReadAllText(Filename, Encoding); // TFile 引用 System.IOUtils
end;
Tips
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:115 更新时间:2020-3-24 11:31:24  【打印此页

上一条:delphi TextFile操作文本文件

下一条:已经是最后一篇了

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修
欢迎您,来自IP为:3.235.172.213 的朋友!您是第960887位访客; 其中 电脑访客746473位,手机访客214414位.当前在线人数2114位.最高记录是 2114