dotnet core 讀取 big 5 檔案

讀取古老的 windows xp 程式所產出的檔案,最大的問題就是編碼。

因為這些程式仍然採用 big-5 編碼,因此往往會產生亂碼,而且很理解原因(因為在 windows 使用記事本開啟仍然可以看到中文)。

此時,最簡單的方案就是直接加入 Encoding.GetEcoding(“big5”) 解決。然而這個在 dotnet core 不是內建 Encoding 的 code pages,必須要額外安裝:

Install-Package System.Text.Encoding.CodePages

安裝完畢後,在程式一開始就將編碼擴充:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

之後就可以使用以下方式讀取中文了:

using (StreamReader sr = new StreamReader(file, Encoding.GetEncoding("big5")))
{
    var line = sr.ReadLine();
}