May 2, 2013

Legit Log Viewer無法讀取中文字

用Legit Log Viewer開啟含有中文字的紀錄檔時,發現中文字變成亂碼。


原本以為是因為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: