This documentation is archived and is not being maintained.

Encoding::BigEndianUnicode Property

Updated: October 2010

Gets an encoding for the UTF-16 format using the big endian byte order.

Namespace:  System.Text
Assembly:  mscorlib (in mscorlib.dll)

public:
static property Encoding^ BigEndianUnicode {
	Encoding^ get ();
}

Property Value

Type: System.Text::Encoding
An encoding object for the UTF-16 format using the big endian byte order.

The UnicodeEncoding object that is returned by this property may not have the appropriate behavior for your application. It uses replacement fallback to replace each string that it cannot encode and each byte that it cannot decode with a question mark ("?") character. Instead, you can call the UnicodeEncoding::UnicodeEncoding(Boolean, Boolean, Boolean) constructor to instantiate a big endian UnicodeEncoding object whose fallback is either an EncoderFallbackException or a DecoderFallbackException, as the following example illustrates.

No code example is currently available or this language may not be supported.

The returned UnicodeEncoding object has BodyName, HeaderName, and WebName properties that yield the name "unicodeFFFE". Although the UTF-16 big endian byte order mark is hexadecimal FEFF, the name "unicodeFFFE" was chosen because the byte order mark appears as hexadecimal FFFE on little endian Windows computers.

The following example reads a text file with a UTF-16 encoding using the big endian byte order.

using namespace System;
using namespace System::IO;
int main()
{

   // Read a text file saved with Big Endian Unicode encoding.
   System::Text::Encoding^ encoding = System::Text::Encoding::BigEndianUnicode;
   StreamReader^ reader = gcnew StreamReader( "TextFile.txt",encoding );
   String^ line = reader->ReadLine();
   while ( line != nullptr )
   {
      Console::WriteLine( line );
      line = reader->ReadLine();
   }
}

The following example determines the number of bytes required to encode a character array, encodes the characters, and displays the resulting bytes.

using namespace System;
using namespace System::Text;
void PrintCountsAndBytes( array<Char>^chars, Encoding^ enc );
void PrintHexBytes( array<Byte>^bytes );
int main()
{

   // The characters to encode: 
   //    Latin Small Letter Z (U+007A) 
   //    Latin Small Letter A (U+0061) 
   //    Combining Breve (U+0306) 
   //    Latin Small Letter AE With Acute (U+01FD) 
   //    Greek Small Letter Beta (U+03B2) 
   //    a high-surrogate value (U+D8FF) 
   //    a low-surrogate value (U+DCFF) 
   array<Char>^myChars = gcnew array<Char>{
      L'z','a',L'\u0306',L'\u01FD',L'\u03B2',L'\xD8FF',L'\xDCFF'
   };

   // Get different encodings.
   Encoding^ u7 = Encoding::UTF7;
   Encoding^ u8 = Encoding::UTF8;
   Encoding^ u16LE = Encoding::Unicode;
   Encoding^ u16BE = Encoding::BigEndianUnicode;
   Encoding^ u32 = Encoding::UTF32;

   // Encode the entire array, and print out the counts and the resulting bytes.
   PrintCountsAndBytes( myChars, u7 );
   PrintCountsAndBytes( myChars, u8 );
   PrintCountsAndBytes( myChars, u16LE );
   PrintCountsAndBytes( myChars, u16BE );
   PrintCountsAndBytes( myChars, u32 );
}

void PrintCountsAndBytes( array<Char>^chars, Encoding^ enc )
{

   // Display the name of the encoding used.
   Console::Write( "{0,-30} :", enc );

   // Display the exact byte count. 
   int iBC = enc->GetByteCount( chars );
   Console::Write( " {0,-3}", iBC );

   // Display the maximum byte count. 
   int iMBC = enc->GetMaxByteCount( chars->Length );
   Console::Write( " {0,-3} :", iMBC );

   // Encode the array of chars. 
   array<Byte>^bytes = enc->GetBytes( chars );

   // Display all the encoded bytes.
   PrintHexBytes( bytes );
}

void PrintHexBytes( array<Byte>^bytes )
{
   if ( (bytes == nullptr) || (bytes->Length == 0) )
      Console::WriteLine( "<none>" );
   else
   {
      for ( int i = 0; i < bytes->Length; i++ )
         Console::Write( "{0:X2} ", bytes[ i ] );
      Console::WriteLine();
   }
}

/* 
This code produces the following output.

System.Text.UTF7Encoding       : 18  23  :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D
System.Text.UTF8Encoding       : 12  24  :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding    : 14  16  :7A 00 61 00 06 03 FD 01 B2 03 FF D8 FF DC
System.Text.UnicodeEncoding    : 14  16  :00 7A 00 61 03 06 01 FD 03 B2 D8 FF DC FF
System.Text.UTF32Encoding      : 24  32  :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00

*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0

Date

History

Reason

October 2010

Noted replacement fallback behavior.

Customer feedback.

Show: