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

浏览:563
问题:
在使用excel的开发功能,操控txt文档创建仿真报告的过程中,发现有时会出现乱码、报错的问题。了解后发现txt文档针对“汉字”是有区分不同编码的。
- Ansys Workbench 写出的txt是“ANSI”编码的文档。
- 而Python或其它写出的txt文档有时是“utf-8”编码的文档。
当读取这些txt文档时,如果不区分编码格式,就会导致读入的“汉字”是乱码。
所以在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编码。
以下内容为付费内容,请购买后观看
包含3个文件
EXCEL中对txt文档编码格式校验和强制转换的VBA内容

结果文档- 副本.txt
1.84KB

EXCEL编码内容.txt
4.55KB

txt文档编码转ANSI.xlsm
20.99KB

技术邻APP
工程师必备
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
