2015年7月19日星期日

UniConv - 超強轉碼工具 BIG5/GB/UTF8/Unicode

這個月工作上都需要用上SSIS ( SQL Server Integration Services ),處理以億行計的資料。
當中有一個難處是客戶提供的CSV出現中文亂碼,本來應該是UTF8的,他匯出了BIG5編碼。

本來日常對於這回事,是很簡單處理的。
可以用Notepad++人手轉換,或者用廣為人知的經典工具 - ConvertZ

但這次我處理數百計的CSV,所以必須要支援Parameter,由SSIS中傳遞檔案路徑,而且CSV檔案是上1GB的,相信很多軟件打開都會Crash。

這個網站找來知名的Iconv,滿心歡喜以為事情簡單,但轉出來的UTF8檔案,依然是亂碼。
研究過後是Iconv轉換出來的UTF8檔是沒有BOM ( 什麼是BOM? ),亦嘗試跟這裡做自行加上,但都不行。

最後在一個不起眼的討論串當中找到這個叫 UniConv的工具,效果十分好。
轉換1GB檔案竟然不用30秒。
一個小小的工具可以做大大的事。

執行命令很直接:
C:\uniconv.exe BIG5 "C:\chinese_input.txt" UTF8 "C:\chinese_output.txt"

如果還出現亂碼可以試一試把Output的編碼轉為"Unicode11:BOM:UTF8" 或 "Unicode20:BOM:UTF8",之於三者有什麼分別,我就沒有去研究了。
其他參數和編碼可以看Readme檔案 - uniconv.txt。

下載 UniConv由我的Dropbox下載

一開始總覺得這個工具很神秘,細看之下原來已經是1998年編譯的,由一間叫Basis Technology所寫,但現在連官網上都找不到這個工具了。