2010年3月16日 星期二

[C#] 字串的編碼改變

這個問題一直是很大的問題,但是以前都是裝做不知道,一律用 ASCII 來混過去。
反正以前 VB 或 VC 在中文的環境下,也是用 ASCII 當做預設值,所以只要是打英文就沒事了。
現在開發環境換成 .Net 之後,預設值是 unicode,
也就是在程式中,你看到的就是 unicode 編碼的 string,其實正常也不會有問題。
但是,要跟 com port 傳資料,就會出問題了,怎辦?

好,.Net 也想到了解決方法,
就是用 System.Text.Encoding.ASCII.GetBytes, Encoding.ASCII.GetString 這兩個方法來處理。

當你要把程式中的字串,變成 ASCII 的編碼送出去,
就先用 Encoding.ASCII.GetBytes 把字串變成 byte[],然後把轉好的 byte[] 直接送出去。

當你要把接收到的 byte[],變成 Unicode 的編碼的字串,
就用 Encoding.ASCII.GetString 變成字串。

同理,其他的編碼就照樣造句囉…

當你要把文字中的字串,變成 Unicode 的編碼送出去,
就先用 System.Text.Encoding.Unicode.GetBytes 把字串變成 byte[],然後把轉好的 byte[] 直接送出去。

當你要把接收到的 byte[],變成 Unicode 的編碼的字串,
就用 Encoding.Unicode.GetString 變成字串。

想要知道有什麼編碼可以用,就用 Encoding.GetEncodings 列舉出來看看。

完畢