[C#].Net編碼轉換 Unicode to Big5

文章分類: C#




.Net預設使用的文字編碼是Unicode,有時候會遇到不得不把這個編碼做轉換的工作,可以用以下的code把Unocode轉成Big5

?View Code CSHARP
string origString = "這是Unicode編碼的文字";
string result = Encoding.GetEncoding(950).GetString(Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(950), Encoding.Unicode.GetBytes(origString)));

拆解的話有幾個步驟
1. 把原來Unicode的字串轉成bytes

?View Code CSHARP
Encoding.Unicode.GetBytes(origString)

2. 將Unicode的文字bytes轉成Big5的bytes

?View Code CSHARP
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啦

?View Code CSHARP
Encoding.GetEncoding(950).GetString(big5Bytes);

最後如果要將這些文字存檔的話, 記得要設定好目標檔案的編碼, 才不會出現亂碼, 例如

?View Code CSHARP
System.IO.File.WriteAllText(saveFileDialog1.FileName, result, Encoding.GetEncoding(950));

或是

?View Code CSHARP
System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog1.FileName, false, Encoding.GetEncoding(950));

發表回應

Bad Behavior has blocked 36 access attempts in the last 7 days.