原本以為是因為NLog設定檔沒有指定encoding的關係,所以加上了encoding="utf-8"在target中。
設定完再產出紀錄檔,這次先用Notepad++開啟查看。很好,亂碼沒了。
再用Legit Log Viewer開啟紀錄檔,卻仍然是亂碼。猜測可能是與BOM有關。用Notepad++看了一下紀錄檔的格式是Encode in UTF-8 without BOM,改成Encode in UTF-8並存檔。
再以Legit Log Viewer開啟紀錄檔,Bang!中文正常顯示。
查了一下發現這似乎是個已知的問題,NLog寫檔時並未將BOM寫入造成Legit Log Viewer讀取UTF-8字元時出現上述的亂碼,可以透過修改NLog原始碼的方式解決這個問題。不過話說回來要是遇到不檢查BOM的讀取程式不也是一樣出現錯誤?
No comments:
Post a Comment