VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net Encoding类 编码解码(2)

如果要转换的数据仅存在于连续块(如从流中读取的数据)中,或者如果数据量很大,需要划分为较小的块,则应用程序应当使用由某个派生类的GetDecoder 方法提供的 Decoder 或由该派生类的 GetEncoder 方法提供的 Encoder。

UTF-16 和 UTF-32 编码器可以使用 Big-Endian 字节顺序(从最高有效字节开始),也可以使用 Little-Endian 字节顺序(从最低有效字节开始)。例如,大写拉丁字母 A (U+0041) 的序列化结果(十六进制)如下所示:

  • UTF-16 Big-Endian 字节顺序:00 41

  • UTF-16 Little-Endian 字节顺序:41 00

  • UTF-32 Big-Endian 字节顺序:00 00 00 41

  • UTF-32 Little-Endian 字节顺序:41 00 00 00

通常,使用本机字节顺序存储 Unicode 字符的效率更高。例如,在 Little-endian 平台(如 Intel 计算机)上最好使用 Little-endian 字节顺序。

GetPreamble 方法检索一个包括字节顺序标记 (BOM) 的字节数组。 如果将此字节数组作为编码流的前缀,将有助于解码器识别所用的编码格式。

有关字节顺序和字节顺序标记的更多信息,请参见位于 联机  Unicode home page(Unicode 主页)上的“The Unicode Standard”(Unicode 标准)。

请注意,编码类允许错误进行如下更改:

  • 无提示地更改为一个 "?"字符。

  • 使用“最佳匹配”字符。

  • 通过将 EncoderFallback 和 DecoderFallback 类与 U+FFFD Unicode 替换字符结合使用来更改为特定于应用程序的行为。

建议让您的应用程序针对所有的数据流错误引发异常。应用程序要么在适用时使用“throwonerror”标志,要么使用 EncoderExceptionFallback 和DecoderExceptionFallback 类。 通常不建议使用最佳匹配回退,因为它可能会导致数据丢失或发生冲突,而且比简单字符替换慢。对于 ANSI 编码,最佳匹配行为是默认行为。

示例
 
 

下面的代码示例将字符串从一种编码转换为另一种编码。

说明 说明

byte[] 数组在此示例中是唯一包含编码数据的类型。.NET Char 和字符串类型是本身 Unicode,因此 GetChars 调用将数据再解码为 Unicode。

 
VB
C#
C++
F#
JScript
 
打印
Imports System
Imports System.Text
Imports Microsoft.VisualBasic

Namespace Convert_Example
    Class MyConvertExampleClass
        Shared Sub Main()
            Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")"

            ' Create two different encodings.
            Dim ascii As Encoding = Encoding.ASCII
            Dim [unicode] As Encoding = Encoding.Unicode

            ' Convert the string into a byte[].
            Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)

            ' Perform the conversion from one encoding to the other.
            Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)

            ' Convert the new byte[] into a char[] and then into a string.
            ' This is a slightly different approach to converting to illustrate
            ' the use of GetCharCount/GetChars.
            Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)-1) As Char
            ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
            Dim asciiString As New String(asciiChars)

            ' Display the strings created before and after the conversion.
            Console.WriteLine("Original string: {0}", unicodeString)
            Console.WriteLine("Ascii converted string: {0}", asciiString)
        End Sub
    End Class
End Namespace

继承层次结构
 
 
System .Object 
    System.Text .Encoding 
      System.Text .ASCIIEncoding 
      System.Text .UnicodeEncoding 
      System.Text .UTF32Encoding 
      System.Text .UTF7Encoding 
      System.Text .UTF8Encoding 
线程安全
 
 
此类型的任何公共  static(在 Visual Basic 中为  Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
平台
 
 

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

 

 

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见  .NET Framework 系统要求。
版本信息
 
 

.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 

.NET Framework Client Profile

受以下版本支持:4 

XNA Framework

受以下版本支持:3.0、2.0、1.0 
请参见
 
 

参考

Encoding 成员
System.Text 命名空间

其他资源

了解编码


相关教程
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号