字符串编码问题总结
字符串编码发展历史:http://www.imkevinyang.com/2009/02/%E5%AD%97%E7%AC%A6%E7%BC%96%E8%A7%A3%E7%A0%81%E7%9A%84%E6%95%85%E4%BA%8B%EF%BC%88ascii%EF%BC%8Cansi%EF%BC%8Cunicode%EF%BC%8Cutf-8%E5%8C%BA%E5%88%AB%EF%BC%89.html
文章大概讲的内容是:1.ANSI方案的Ascii编码,初期,美国标准,1字节,8位,用到了127号。
2.其他国家发展处各种编码。我国编码的发展;汉字全角字符采用双字节编码,原来的Ascii不变,也就是超过127的都是中文;各种gbk标准。
3.ISO制定Unicode,所有的字符都使用两个字节,也就是16位,英文及一些字符高位为0。strlen函数靠不住了,一个汉字不再是相当于两个字符了,而是一个!是 的,从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的"一个字符"!同时,也都是统一的"两个字节",请注意"字符"和"字节"两个术语 的不同, "字节"是一个8位的物理存贮单元,而"字符"则是一个文化相关的符号。
4.utf系列编码的出现,及应用。
引用知乎的一篇关于utf和Unicode编码的图解:https://www.zhihu.com/question/23374078
c#中Unicode转utf-8
byte[] byUnicode = Encoding.Unicode.GetBytes(strSrc); byte[] byUtf8 = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, byUnicode); string strDec = Encoding.Default.GetString(byUtf8);
现在没有搞清楚为什么default可以但是Unicode不行,系统默认不是Unicode吗?待验证。
posted on 2016-04-29 13:40 sunshinfight 阅读(135) 评论(0) 收藏 举报
浙公网安备 33010602011771号