ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 再谈Net Framework中的编解码

再谈Net Framework中的编解码

原创 Linux操作系统 作者:iDotNetSpace 时间:2010-04-15 16:17:34 0 删除 编辑

System.text命名空间

.Net Framework中这个命名空间是有关对文本进行操作的类集。具体可分为编码解码相关;字符串操作相关;正则表达式相关,这样三个组成部分。

 

编码/解码

l   在ASP.NET开发中一般不用我们自己写程序实现对文本的编码解码。通常只需要对当前Page页进行设计时或运行时的编码指定即可,默认情况下则会使用UTF-8这种编码。

l   从更低的层次来看,计算机处理的数据就可看作是文本与二进制数据。需要编解码的就是文本的数据,二进制数据根本不需要编解码。

l   编码就是把文本处理为字节集,实现让计算机对数据进行处理,传递与存储;解码则是把字节集处理为对人类而言有意义的文本,并由输出设备输出。

l   Net Framework内部使用UTF-16这种编码格式处理文本。

l   Net Framework中处理编码解码的类位于System.text命名空间。这包括Encoding抽象基类及其派生类;Encoder/Decoder类。

Encoding

l   Encoding是个抽象类,必须继承使用。但是它有一组静态属性和方法,用来返回Encoding的派生类的实例。例如:Encoding.UTF8属性,返回的是UTF8Encoding类实例。

l   Encoding的派生类的实例也可以通过NEW构造函数而得。

l   Encoding的多个表示不同编码的派生类,来具体完成编码和解码的任务。注意:还有解码哦!

l   既然Encoding的派生类能完成编码解码的任务,为什么还需要Encoder/Decoder呢?在网络传输时,我们有可能是把数据分几次来传输;在对文件进行读写时也可能是分多次来进行。问题就在于多次。假设我们某一次传输的字节集,其数量不足以处理为有效的文本,麻烦就来了,例如汉字”未”用UTF-8编码后是三个字节,如果我们只传输了2个字节,解码后的就是乱码而不是汉字”未”。Encoder/Decoder这两个编解码类,就是用来处理这样的问题。用他们进行编解码时,如果字节集不足以完全解码,就先解码一部分,剩下的字节集暂时保留在Decoder中,等待下一次字节集的传输,这样就能保证被解码的是正常的文本。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-659842/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766206