C#中的字符串及其编码转换
关于字符编码以及如何在程序中处理unicode,本想写篇文章总结学习一下,但发现有前人已经论述的很完善了,不再重复,可以参考:http://www.regexlab.com/zh/encoding.htm。
在C++中,字符有char和wchar之分,相应的,字符串有string和wstring两种。
C#中,string是一个unicode字符串,相应的,每个char都是16位。
源文件中出现的字符串常量,都会被自动转换为unicode编码(utf16),利用Text.Encoding,可以实现不同编码间的转换。
using System; using System.Text; namespace test { class Program { static void Main(string[] args) { string u16s = "忘记了啊abc"; //默认的字符编码是unicode,也就是utf16 //4种编码 Encoding utf8 = Encoding.UTF8; Encoding utf16 = Encoding.Unicode; Encoding gb = Encoding.GetEncoding("gbk"); Encoding b5 = Encoding.GetEncoding("big5"); //转换得到4种编码的字节流 byte[] u16bytes = u } } }