[*] Hello Snoopy

.NET and Flash Blog
经验总结--字符串与编码

SRC:http://search.csdn.net/Expert/topic/1880/1880675.xml?temp=3.344363E-02
这几个月作手机短信的项目,碰到了很多字符编码的问题,真头痛。经过多番资料的搜索、亲手尝试和高人的指点,现在好像没那么迷惘了。现作了一些总结跟大家分享(有误之处请指点)

  首先应该把字节数组看成是String的载体。
  dot Net使用的字符串String是Unicode编码的;它也是以Unicode编码的形式显示字符串。

  以下是用自己语言对几个常用函数的说明:
  (自己总结的,反正看不明MSDN)
  bytes=System.Text.Encoding.Unicode.GetBytes(str)
  作用:把str的载体作Unicode->Unicode的编码转换--也就是没有对载体作任何的转换。因些使用此函数可以得代表该String载体的字节数组。
  str=System.Text.Encoding.Unicode.GetString(bytes)
  作用:对字节数组作Unicode->Unicode的编码转换--即没有转换,把经过转换后的字节数组作为str的载体。

  bytes=System.Text.Encoding.Utf8.GetBytes(str)
  作用:把str的载体作Utf8->Unicode的编码转换。返回的是经过转换后的字符数组
  str=System.Text.Encoding.Utf8.GetString(bytes)
  作用:对字节数组作Gb2312->Unicode的编码转换,把经过转换后的字节数组作为str的载体。

  bytes=System.Text.Encoding.GetEncoding("GB2312").GetBytes(str)
  作用:把str的载体作Gb2312->Unicode的编码转换。返回的是经过转换后的字符数组
  str=System.Text.Encoding.GetEncoding("GB2312").GetString(bytes)
  作用:对字节数组作Gb2312->Unicode的编码转换,把经过转换后的字节数组作为str的载体。

如此类推
  bytes=System.Text.Encoding.GetEncoding("XXX").GetBytes(str)
  作用:把str的载体作XXX->Unicode的编码转换。返回的是经过转换后的字符数组
  str=System.Text.Encoding.GetEncoding("XXX").GetString(bytes)
  作用:对字节数组作XXX->Unicode的编码转换,把经过转换后的字节数组作为str的载体。

这里是我收集的一些有关字符编码的资料:http://61.145.116.154/bm/
还有:
http://www.unicode.org/charts/unihan.html
根据Unicode编码查其对应字符的字形、Utf8、汉字区位码等
http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/GB/GB2312.TXT Unicode与Gb2312的对照表
http://www.sun.com/developers/gadc/technicalpublications/articles/mabiao.txt
Unicode与Gbk对照表

 

posted on 2005-01-27 12:17  HelloSnoopy  阅读(1071)  评论(0编辑  收藏  举报