如何判断文本文件的编码格式?

新能源知识库(98)SOC曲线介绍 ​:一条异常的健康SOC曲线,往往能提前反映出电池性能的衰退或系统存在的隐患。BMS和EMS通过实时跟踪SOC值,能在电池电量过高(如>95%)时停止充电,电量过低(如<20%)时停止放电,从而避免因过度充放电引发的。​:OCV-SOC曲线上较为平坦的部分(例如,磷酸铁锂电池通常在20%-80% SOC范围)。​:在光伏、储能、电网协同的系统中,SOC曲线是能量调度的核心依据。​:电池的寿命很大程度上取决于它的工作方式。​:利用电池静置后电压与SOC的对应关系来估算,较准确但需要电池静置,无法实时使用。 阅读详情
这里指的文本是用于Windows系统中的扩展名为.txt的文件。

Notepad(记事本)只支持四种格式:ANSI/Unicode/Unicode big endian/UFT-8,在Delphi中如何判断与读取这些不同格式的文本呢?

首先,不同编码的文本,是根据文本的前两个字节来定义其编码格式的。定义如下:

ANSI:        无格式定义;
Unicode:       前两个字节为FFFE;
Unicode big endian: 前两字节为FEFF;  
UTF-8:        前两字节为EFBB; 

知道了各种编码格式的区别,写代码就容易了,以下是我在一个软件中写的处理代码:
(注意,Delphi的TMemo/TRichEdit只支持ANSI的文本文件,其它编码格式的文件需要
自行写代码转换成GB2312或BIG5,方能正确显示)

type
  TTextFormat=(tfAnsi,tfUnicode,tfUnicodeBigEndian,tfUtf8);
const
  TextFormatFlag:array[tfAnsi..tfUtf8] of word=($0000,$FFFE,$FEFF,$EFBB); 

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

{ TextFormat返回文本编码类型,sText未经处理的文本 }
procedure ReadTextFile(const FileName: string;
  var TextFormat: TTextFormat; var sText:string);
var
  w:Word;
  b:Byte;
begin
  with TFileStream.Create(FileName,fmOpenRead or fmShareDenyNone) do
  try
    Read(w,2);
    w:=WordLoHiExchange(w);//因为是以Word数据类型读取,故高低字节互换
    if w = TextFormatFlag[tfUnicode] then
      TextFormat:= tfUnicode
    else if w = TextFormatFlag[tfUnicodeBigEndian] then
      TextFormat:= tfUnicodeBigEndian
    else if w = TextFormatFlag[tfUtf8] then
    begin
      Read(b,1);//这里要注意一下,UFT-8必须要跳过三个字节。
      TextFormat:=tfUtf8;
    end else
    begin
      TextFormat:=tfANSI;
      Position:=0;
    end;
    SetLength(sText,Size-Position);
    ReadBuffer(sText[1],Size-Position);
  finally
    Free;
  end;
end;

{
}
【C++PTA】6-1 Point类的运算 (10 分) 定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<<p<<endl;可以输出该点对象的坐标。 函数接口定义: 实现Point类。 裁判测试程序样例: /* 请在这里填写答案 */ int main(int argc, char const *argv[]) { P 阅读详情

相关推荐

HTML金色流星雨(完整代码)

HTML实现金色流星雨动态效果的完整代码。

AIGC 929

win10如何查看文本文件的编码

有的文件不是纯文本的,比如它混入了二进制值,这时,用记事本打开大概率是乱码,记事本也显示不出正确的编码。用file命令结果显示的是data,不清楚是什么编码。如上图, 当前编码是UTF-8 Unicode。如上图,当前编码是UTF-8。如上图,当前编码是UTF-8。

suyanpengvc4的博客 3万+

dsPIC33系列中文参考手册

dsPIC33 系列单片机 中文文档。喜欢就下载 dsPIC33 系列单片机 中文文档。dsPIC33 中文参考手册

C++ UTF-8编码识别(分析文件内容,非文件头)

<br />C++ UTF-8编码识别<br /><br />转载请注明原创作者刘志远<br />http://blog.csdn.net/liuzhiyuan1982<br /><br />UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, 字节序标志),即0xEF, 0xBB, 0xBF,有的没有。Windows下的文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。然而BOM不是必需的,而且也不是推荐的。对

新爷的专栏 6113

java学习日记day03---变量就是一段内存空间

定义一个变量,就是向内存申请一段空间 对于基本数据类型 byte 1字节 short 2字节 int 4字节 long 8字节 float 4字节 double 8字节 boolean 1字节 char 2字节(c语言占1字节) 对于引用数据类型 People p; 也是向内存申请一块空间,栈内存中存指针地址,堆内存中存储值 ...

wdw66666的博客 368

C#中判断文本文件编码格式的静态类

1、定义一个判断文本文件编码格式的静态类--TextEncodingType: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace Demo_Menu { ...

小宇飞刀的BLOG 1214

java判断文本文件编码格式juniversalchardet使用

java判断文本文件编码格式juniversalchardet使用 今天项目经理让写一个判断隔断文本文件格式的接口,废话不多说直接上代码。 juniversalchardet官网地址: http:code.google.com/p/juniversalchardet/ github地址 https://github.com/thkoch2001/juniversalchardet 支持的编码格式 ...

Hello_Tree__的博客 1452

Delphi判断文本文件编码格式

今天在网上看到一位老兄写的判断记事本保存的文本的四种格式的判断,觉得非常不错。Notepad(记事本)只支持四种格式:ANSI/Unicode/Unicode big endian/UFT-8,在Delphi中如何判断与读取这些不同格式的文本呢?首先,不同编码的文本,是根据文本的前两个字节来定义其编码格式的。定义如下:ANSI:        无格式定义;Unicode:     

Newweapon's Trace 2587

如何用VFP判断文本文件编码格式

*--文本文件编码格式手动查看方法:*--用记事本打开文本后,点击菜单上的“另存为”,编码格式在出现的对话框下方。*--那用VFP如何取得文本文件编码格式呢,如下:lcFileName=C:/A.txt    &&文本文件名lcStr=Filetostr(lcFileName)lcStrType=Createbinary(Substr(lcStr,1,2))Do Case    Case

apple_8180(十豆三) 的专栏 9731

Delphi 判断文本文件编码格式并读取内容

这里指的文本是用于Windows系统中的扩展名为.txt的文件。 Notepad(记事本)只支持四种格式:ANSI/Unicode/Unicode big endian/UFT-8,在Delphi中如何判断与读取这些不同格式的文本呢? 首先,不同编码的文本,是根据文本的前两个字节来定义其编码格式的。定义如下: ANSI: 无格式定义; Unicode: 前两个字节为FFFE; Unicode bi...

百万软件 1589

Delphi 判断文本文件编码格式

不同编码的文本,是根据文本的前两个字节来定义其编码格式的。定义如下: ANSI: 无格式定义; Unicode: 前两个字节为FFFE; Unicode big endian: 前两字节为FEFF; UTF-8: 前两字节为EFBB; type   TTextFormat=(tfAnsi,tfUnicode,tfUnicodeBigEndian,tfUtf8); const

人体运动、生物特征、高性能移动计算、人性化智能交互 1795

java判断文本文件编码格式

上篇文章需要读取当前java或者配置文件的编码格式,这里主要支持UTF-8、GBK、UTF-16、Unicode等 /** * 判断文件的编码格式 * @param fileName :file * @return 文件编码格式 * @throws Exception */ public static String codeString(File fileName) thro...

lipeng的博客 1万+

Qt自动判断文本文件编码格式(QT自定义文件编辑器)

迅哥说:每个程序员都会遇到乱码问题,只是早晚的事情。(鲁迅:我没说过) 问题形容:比如在qt自定义一个文件编辑器,类似于window的记事本,会发现打开不同编码格式文本文件会乱码。。 解决方案:window系统的 txt 文件编码一般有 ANSI 或者 UTF8 格式,其中 ANSI 也就是qt里的 GBK格式。因此,只要我们在打开文本文件时先判断该文件的编码格式,然后qt设置好该编码格式后读取文件即可。 1、第一次打开文件 2、判断编码格式 3、关闭文件 4、再次打开文件 5、根据第二步的返回值设置

ZHLCHLC的博客 6389

vba判断文件编码格式_如何用vba判断一个记事本文本文件是什么编码?

在了解如何用vba判断一个文本文件是以什么编码形式保存之前,我们先来了解下字节序的概念。比如一个中文字符“保”的unicode编码为4FDD,在存入到计算机时,需要用2个字节,如果第一个字节存4F,第二个字节存DD,那么它的字节序就是Big Endian。如果第一个字节存DD,第二个字节存4F,那么它的字节序就是 Little Endian。由于一个文本文件可以保存为ANSI编码、Unicode ...

weixin_39791152的博客 2037

C# 判断一个文本文件编码格式(转载)

文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE FF时,是...

1877

判断一个文本文件编码格式

文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。 对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。 我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE FF

Luther的专栏 1479

金融科技发展水平原始数据.dta

金融科技发展水平原始数据.dta

上一篇: 编码格式3
下一篇: 编码格式4
oluckly
博客等级 码龄19年 9粉丝 4原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值