Convert Big5 To UTF8

前陣子專案在放上SonarQube掃描時,

發生了部分檔案無法掃描的情況,

追查後發現是專案中部份檔案的編碼(ANSI,中文為Big5)和設定(UTF8)不符,

因而有了此需求。

要將檔案轉換成UTF8編碼,

可以很簡單的使用Notepad++的轉碼功能做轉換:

但是因為專案相當龐大,

不太可能一一去做轉換,

勢必要透過一些工具去處理,

網路上這類的轉碼工具的確是有許多,

但分析了一下自身的需求:

  1. 找出某路徑底下所有.cs的檔案
  2. 檢查該檔案是否為Big5編碼
  3. 若是則做轉換

簡單的轉碼工具似乎是無法很直接的滿足需求,

那就來試著寫一個吧!

 

首先因只有部分檔案有編碼問題,

故不希望有將UTF8的檔案進行讀出後再存成UTF8的動作,

所以需要有個方法判斷某檔案是否為Big5編碼,

這邊參考黑大的文章(CODE-偵測檔案是否為BIG5編碼)並做點修改及說明,

而有了以下判斷方法:

接下來就是掃出某路徑底下的檔案後判斷編碼並做轉換:

 

都準備完成了,來進行實驗:

將剛剛的主程式複製一份並透過Notepad++轉換成Big5(原先為UTF8編碼)

把App.config的路徑調整好後,執行程式結果如下:

至於如何驗證成功轉成UTF8編碼,

這邊是簡單的使用Windows的記事本,

打開檔案後選擇另存新檔,

若編碼預設是UTF-8的話代表檔案原先已經是UTF-8編碼囉!

 

補充:

使用Cygwin、PowerShell或是Linux下的Terminal進行編碼轉換

https://superuser.com/questions/27060/batch-convert-files-for-encoding

 

(本文同時發表於Yohey66’s Corner)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *