在网络传输和文件操作中,如果数据量很大,需要将其划分为较小的快,此时可能出现一个数据块的末尾是一个不匹配的高代理项,而与其匹配的低代理项在下一个数据块。

这时候使用Encoding的GetBytes方法处理较为麻烦,我们直接使用Encoder处理。

Encoder可以将一组字符编码为一个字节序列。而Decoder可以将已编码的字节序列解码为字符序列。

若要获取的实现的实例 Encoder 类,应用程序应使用 GetEncoder 方法 Encoding 实现。

GetByteCount 方法确定多少个字节进行编码的一组 Unicode 字符和 GetBytes 方法执行实际的编码。 这两种方法的几个版本中有 Encoder 类。 有关详细信息,请参阅Encoding.GetBytes

一个 Encoder 对象之间维护状态信息对连续调用 GetBytesConvert 方法,以便它可以正确编码字符跨块的序列。 Encoder 还保留尾随字符数据块的末尾,并在下一步编码操作中使用尾随字符。

例如,一个数据块的末尾可能不匹配的高代理项,并且匹配的低代理项可能在下一个数据块中。 因此, GetDecoderGetEncoder 在网络传输和文件操作很有用,因为这些操作通常处理的数据而不是完整的数据流块。

若要获取的实现的实例 Decoder 类,应用程序应使用 GetDecoder 方法 Encoding 实现。

GetCharCount 方法确定有多少个字符导致个字节的序列进行解码和 GetChars 方法执行实际的解码。 这两种方法的几个版本中有 Decoder 类。 有关详细信息,请参阅Encoding.GetChars

一个 Decoder 对象之间维护状态信息对连续调用 GetCharsConvert 方法,因此它可以正确地对跨块的字节序列进行解码。 Decoder 还保留在数据块的末尾的尾部字节,并在下一步的解码操作中使用的尾随字节。

因此, GetDecoderGetEncoder 非常有用的网络传输和文件操作,因为这些操作通常处理的数据而不是完整的数据流块。

         string str = "在下坂本,有何贵干@@";
Char[] chars = str.ToCharArray();
Debug.Log("String="+new string(chars));
//获得Encoder实例;
Encoder encoder = Encoding.UTF8.GetEncoder();
//计算字符序列化需要的字节数组长度;
byte[] bytes = new byte[encoder.GetByteCount(chars,,chars.Length,true)];
//通过GetBytes转为字节序列;
encoder.GetBytes(chars, , chars.Length, bytes, , true);
Debug.Log(BitConverter.ToString(bytes));
Debug.Log("Encoding.UTF8.GetString=" + Encoding.UTF8.GetString(bytes));
//获得Decoder实例;
Decoder decoder = Encoding.UTF8.GetDecoder();
//计算字节数组对应的字符数组长度;
int charSize = decoder.GetCharCount(bytes, , bytes.Length);
Char[] chs = new char[charSize];
//进行字符转换;
int charLength = decoder.GetChars(bytes, , bytes.Length, chs, );
Debug.Log("Decoder Bytes to String =" + new string(chs));

//output:

MSDN Encoder >>>  https://msdn.microsoft.com/zh-cn/library/system.text.encoder%28v=vs.110%29.aspx

MSDN Decoder >>> https://msdn.microsoft.com/zh-cn/library/system.text.decoder%28v=vs.110%29.aspx

C# 字符编码解码 Encoder 和Decoder的更多相关文章

  1. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...

  2. python 3 字符编码解码问题

    python2与python3 字符编码都做了很大的调整,区别: 1.python2字符串默认有两种类型,unicode和str.'你好' !=u'你好' python3字符串默认只有str一种类型, ...

  3. Python 初始—(字符编码解码)

    字符编码之间的编码转换则需要通过Unicode 进行转换,那么需要一个编码和解码实现与Unicode进行关联转换 例如utf-8转gbk utf-8----decode----->Unicode ...

  4. 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode

    原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...

  5. Python之字符编码与文件操作

    目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...

  6. 使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法

    随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC.Android.IOS.WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题. 多字节字符集MBCS不是跨平台的首选字符集,面向跨 ...

  7. python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str

    python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...

  8. Java 字符编码(二)Java 中的编解码

    Java 字符编码(二)Java 中的编解码 java.nio.charset 包中提供了一套处理字符编码的工具类,主要有 Charset.CharsetDecoder.CharsetEncoder. ...

  9. Java 字符编码(三)Reader 中的编解码

    Java 字符编码(三)Reader 中的编解码 我们知道 BufferedReader 可以将字节流转化为字符流,那它是如何编解码的呢? try (BufferedReader reader = n ...

随机推荐

  1. 纯JS 将table表格导出到excel

    html <div > <button type="button" onclick="getXlsFromTbl('tableExcel','myDiv ...

  2. 判断整数是否能被n整除

    (1)1与0的特性:         1是任何整数的约数,即对于任何整数a,总有1|a.         0是任何非零整数的倍数,a≠0,a为整数,则a|0. (2)若一个整数的末位是0.2.4.6或 ...

  3. iPhone / iPad UI界面设计与图标设计的尺寸设计规范+安卓+网页

    ①iPhone的设计尺寸 iPhone界面尺寸: 设备 分辨率 状态栏高度 导航栏高度 标签栏(工具栏)高度 iPhone6 plus设计版 1242 × 2208 60px 132px 146px ...

  4. AndroidTouch事件总结

    1.自定义的控件几乎都要用到触摸事件,不交互怎么响应,相关的事件处理函数由dispatchTouchEvent.onInterceptTouchEvent.onTouchEvent,处理这些事件的由v ...

  5. sql 生成指定相同数量数据

    select *from  表名 ,(SELECT NUMBER FROM master..spt_values WHERE number BETWEEN  1 AND  2 AND TYPE='P' ...

  6. RSA加密,应用授权及MSSQL备份与还原

    01.QBRSA加解密处理 --> a.利用 RSA密钥生成器生成密钥(e,n,d) [e,n]为私钥, [d,n]为公钥 b.正向加密:  用私钥加密,用公钥解密 c.反向加密:  用公钥加密 ...

  7. Office 365 SharePoint 使用Charts Web Part

    如果你在web part->业务数据下找不到Charts Web Part 可以修改你的URL https://goitmch.sharepoint.com/sites/xxxx/_layout ...

  8. java.lang.UnsupportedClassVersionError出错

    代码出错如下:java.lang.UnsupportedClassVersionError: cn/itcast/mybatis/first/MybatisFirst : Unsupported ma ...

  9. 修改加粗cmd和powershell命令行的中文字体

    powershell 传教士 原创文章 2016-06-20 允许转载,但必须保留名字和出处,否则追究法律责任 ---[前言]--- 1 环境: win10 10586 powershell 5.0 ...

  10. gucci fake bags is usually really a sign of luxurious

    As soon as the violent trembling from the planet, standing company, people will certainly need to st ...