讀取古老的 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();
}