一般來說在讀寫文字檔時候很少會注意文字檔案的編碼方式,畢竟都在windows環境,怎樣都可以把文字檔內容讀出來不過,當今日文字檔是做為資料傳遞工具時候,編碼方式就會很重要。剛好與到一個案例,其實在程式中可以快速進行編碼轉換。
例如原本編碼如下圖:
來源檔案編碼都不相同,但是想要把output檔案轉成統一格式,以這個案例為例,想要把檔案統一轉為UTF-8格式。可以這樣寫一個簡單的轉換程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| string SourcePath = Properties.Settings.Default["SourcePath"].ToString(); string TargetPath = Properties.Settings.Default["TargetPath"].ToString(); DirectoryInfo info = new DirectoryInfo(SourcePath); Console.Write("Start Change Format!!"); foreach (var s in info.GetFiles("*.txt")) { Console.WriteLine(s.FullName); File.WriteAllText(string.Format("{0}\\{1}", TargetPath, s.Name), File.ReadAllText(s.FullName, Encoding.Default), Encoding.UTF8); File.Delete(s.FullName); } Console.Write("End Change!!"); Console.Read();
|
作法就是將檔案抓出來,然後再寫入另一個檔案,再寫入檔案同時進行Encoding
動作就可以。在C#常用的編碼方式都可以列舉出來
若是遇到無列舉的編碼,也可以用Encoding.GetEncoding("UTF-8")
去進行編碼動作。要是今天透過Stream
物件呢?把資料讀進來處理後再作寫檔案的動作,這樣也是可以做編碼的指定
1 2 3 4
| using(StreamWriter sw=new StreamWriter(string,false,Encoding.UTF8)) { ...... }
|