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個文件   1人購買

EXCEL中對txt文檔編碼格式校驗和強制轉換的VBA內容

結果文檔- 副本.txt
1.84KB
EXCEL編碼內容.txt
4.55KB
txt文檔編碼轉ANSI.xlsm
20.99KB
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

5
3