UnicodeEncoding.GetPreamble 方法
如果此实例的构造函数请求提供一个字节顺序标记,则返回用 UTF-32 格式编码的 Unicode 字节顺序标记。
**命名空间:**System.Text
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
Public Overrides Function GetPreamble As Byte()
用法
Dim instance As UnicodeEncoding
Dim returnValue As Byte()
returnValue = instance.GetPreamble
public override byte[] GetPreamble ()
public:
virtual array<unsigned char>^ GetPreamble () override
public byte[] GetPreamble ()
public override function GetPreamble () : byte[]
返回值
如果此实例的构造函数请求提供字节顺序标记,则返回一个包含 Unicode 字节顺序标记的字节数组。 否则,返回一个长度为零的字节数组。
备注
如果将此前导码作为编码流的前缀,将有助于解码器识别所用的编码格式。
编码器可以使用 Big-Endian 字节顺序(从最高有效字节开始),也可以使用 Little-Endian 字节顺序(从最低有效字节开始)。例如,大写拉丁字母 A(码位为 U+0041)的序列化结果(十六进制)如下所示:
Big-Endian 字节顺序:00 00 00 41
Little-Endian 字节顺序:41 00 00 00
或者,UnicodeEncoding 提供一个前导码(即一个字节数组),可以将它作为编码过程中所产生的字节序列的前缀。如果前导码中包含字节顺序标记(码位为 U+FEFF),则它会帮助解码器确定字节顺序和转换格式或 UTF。Unicode 字节顺序标记的序列化结果(十六进制)如下所示:
Big-Endian 字节顺序:00 00 FE FF
Little-Endian 字节顺序:FF FE 00 00
通常,使用本机字节顺序存储 Unicode 字符的效率更高。例如,在 Little-Endian 平台(如 Intel 计算机)上最好使用 Little-Endian 字节顺序。
有关字节顺序和字节顺序标记的更多信息,请参见 www.unicode.org 上的“The Unicode Standard”(Unicode 标准)部分。
警告
若要确保编码后的字节能够正确解码,请在编码后的字节前添加前导码作为前缀。
示例
下面的代码示例演示了如何使用 GetPreamble 方法返回一个 UnicodeEncoding 实例的 Big-Endian 或 Little-Endian 格式的 Unicode 字节顺序标记。
Imports System
Imports System.Text
Imports Microsoft.VisualBasic
Class UnicodeEncodingExample
Public Shared Sub Main()
Dim byteOrderMark() As Byte
Dim b As Byte
byteOrderMark = Encoding.Unicode.GetPreamble()
Console.WriteLine("Default (little-endian) Unicode Preamble:")
For Each b In byteOrderMark
Console.Write("[{0}]", b)
Next b
Console.WriteLine(ControlChars.NewLine)
Dim bigEndianUnicode As New UnicodeEncoding(True, True)
byteOrderMark = bigEndianUnicode.GetPreamble()
Console.WriteLine("Big-endian Unicode Preamble:")
For Each b In byteOrderMark
Console.Write("[{0}]", b)
Next b
End Sub 'Main
End Class 'UnicodeEncodingExample
using System;
using System.Text;
class UnicodeEncodingExample {
public static void Main() {
Byte[] byteOrderMark;
byteOrderMark = Encoding.Unicode.GetPreamble();
Console.WriteLine("Default (little-endian) Unicode Preamble:");
foreach (Byte b in byteOrderMark) {
Console.Write("[{0}]", b);
}
Console.WriteLine("\n");
UnicodeEncoding bigEndianUnicode = new UnicodeEncoding(true, true);
byteOrderMark = bigEndianUnicode.GetPreamble();
Console.WriteLine("Big-endian Unicode Preamble:");
foreach (Byte b in byteOrderMark) {
Console.Write("[{0}]", b);
}
}
}
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Byte>^byteOrderMark;
byteOrderMark = Encoding::Unicode->GetPreamble();
Console::WriteLine( "Default (little-endian) Unicode Preamble:" );
IEnumerator^ myEnum = byteOrderMark->GetEnumerator();
while ( myEnum->MoveNext() )
{
Byte b = safe_cast<Byte>(myEnum->Current);
Console::Write( "[{0}]", b );
}
Console::WriteLine( "\n" );
UnicodeEncoding^ bigEndianUnicode = gcnew UnicodeEncoding( true,true );
byteOrderMark = bigEndianUnicode->GetPreamble();
Console::WriteLine( "Big-endian Unicode Preamble:" );
myEnum = byteOrderMark->GetEnumerator();
while ( myEnum->MoveNext() )
{
Byte b = safe_cast<Byte>(myEnum->Current);
Console::Write( "[{0}]", b );
}
}
import System.*;
import System.Text.*;
class UnicodeEncodingExample
{
public static void main(String[] args)
{
ubyte byteOrderMark[];
byteOrderMark = Encoding.get_Unicode().GetPreamble();
Console.WriteLine("Default (little-endian) Unicode Preamble:");
for(int iCtr = 0; iCtr < byteOrderMark.length; iCtr++) {
ubyte b = byteOrderMark[iCtr];
Console.Write("[{0}]", String.valueOf(b));
}
Console.WriteLine("\n");
UnicodeEncoding bigEndianUnicode = new UnicodeEncoding(true, true);
byteOrderMark = bigEndianUnicode.GetPreamble();
Console.WriteLine("Big-endian Unicode Preamble:");
for(int iCtr = 0; iCtr < byteOrderMark.length; iCtr++) {
ubyte b = byteOrderMark[iCtr];
Console.Write("[{0}]", String.valueOf(b));
}
} //main
} //UnicodeEncodingExample
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0