.Net預設使用的文字編碼是Unicode,有時候會遇到不得不把這個編碼做轉換的工作,可以用以下的code把Unocode轉成Big5
string origString = "這是Unicode編碼的文字"; string result = Encoding.GetEncoding(950).GetString(Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(950), Encoding.Unicode.GetBytes(origString))); |
拆解的話有幾個步驟
1. 把原來Unicode的字串轉成bytes
Encoding.Unicode.GetBytes(origString) |
2. 將Unicode的文字bytes轉成Big5的bytes
Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(950), origBytes); |
其中Encoding.GetEncoding(950)就是抓Big5的Code Page
不同編碼有不同的codepage, Encoding類別域設可以處理ASCII、Unicode、UTF16、UTF8
只要使用Encoding.ASCII這樣的方式就可以抓到了, 可是預設沒有Big5, 所以要自己帶Code Page編號進去
常見的Code Page如
932 日文
936 簡體中文
950 繁體中文
65001 UTF8
更多CodePage可以參考Wiki => http://en.wikipedia.org/wiki/Code_page
3. 最後就是把轉碼後的bytes轉為string啦
Encoding.GetEncoding(950).GetString(big5Bytes); |
最後如果要將這些文字存檔的話, 記得要設定好目標檔案的編碼, 才不會出現亂碼, 例如
System.IO.File.WriteAllText(saveFileDialog1.FileName, result, Encoding.GetEncoding(950)); |
或是
System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog1.FileName, false, Encoding.GetEncoding(950)); |
