EXCEL读取txt文档内容时,如何区分txt文档的编码格式

问题:

      在使用excel的开发功能,操控txt文档创建仿真报告的过程中,发现有时会出现乱码、报错的问题。了解后发现txt文档针对“汉字”是有区分不同编码的。

  • Ansys Workbench 写出的txt是“ANSI”编码的文档。
  • 而Python或其它写出的txt文档有时是“utf-8”编码的文档。

当读取这些txt文档时,如果不区分编码格式,就会导致读入的“汉字”是乱码。

EXCEL读取txt文档内容时,如何区分txt文档的编码格式的图1

EXCEL读取txt文档内容时,如何区分txt文档的编码格式的图2

EXCEL读取txt文档内容时,如何区分txt文档的编码格式的图3

     所以在excel读取txt文档内容时,就需要先对txt文档的编码格式进行判断,在进行读取或转换。

(本人在使用过程中,目前只用到了utf-8 和ANSI 两种编码)

在网络上针对excel解读txt编码进行了检索,知道了一些基本内容,但是没有解决

 

Windows就是使用BOM来标记文本文件的编码方式的。

当用编程的方式判断一个文本文件的编码方式时,如果以二进制形式读取文件头的前两个字节,如果是FEFF,则表示Unicode Big Endian 编码。如果是FFFE,则表示Unicode Little Endian 编码。如果前三个字节是EFBBBF则表示UTF-8编码。如果都不是,则表示是ANSI编码                       

 

但是,好巧不巧的是,utf-8(无BOM)和ANSI两个编码是没有头部的校验码的,因此较难区分,没有找到合适的答案。

当前的解决方案是利用二进制打开文档,逐字校验txt文档编码:

1.     按二进制方式打开txt文档,读取文档内容为二进制数据。

2.     判断每个数据是否符合utf-8编码格式。

3.     不符合就是ANSI编码,符合就是utf-8编码。

4.     将utf-8编码统一更改为ANSI编码。

EXCEL读取txt文档内容时,如何区分txt文档的编码格式的图4

以下内容为付费内容,请购买后观看

包含3个文件

EXCEL中对txt文档编码格式校验和强制转换的VBA内容

结果文档- 副本.txt
1.84KB
EXCEL编码内容.txt
4.55KB
txt文档编码转ANSI.xlsm
20.99KB
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP