Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Encoding.Unicode Property

Definition

Namespace:
System.Text
Assemblies:
mscorlib.dll, System.Text.Encoding.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Text.Encoding.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

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

public:
 static property System::Text::Encoding ^ Unicode { System::Text::Encoding ^ get(); };
public static System.Text.Encoding Unicode { get; }
static member Unicode : System.Text.Encoding
Public Shared ReadOnly Property Unicode As Encoding

Property Value

An encoding for the UTF-16 format using the little endian byte order.

Examples

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

using System;
using System.Text;

public class SamplesEncoding {

 public static void 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)
 char[] myChars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' };

 // 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 );
 }

 public static void PrintCountsAndBytes( char[] chars, Encoding enc ) {

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

 // 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.
 byte[] bytes = enc.GetBytes( chars );

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

 public static void PrintHexBytes( byte[] bytes ) {

 if (( bytes == null ) || ( 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

*/
Imports System.Text

Public Class SamplesEncoding 

 Public Shared Sub 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)
 Dim myChars() As Char = {"z"c, "a"c, ChrW(&H0306), ChrW(&H01FD), ChrW(&H03B2), ChrW(&HD8FF), ChrW(&HDCFF)}
 

 ' Get different encodings.
 Dim u7 As Encoding = Encoding.UTF7
 Dim u8 As Encoding = Encoding.UTF8
 Dim u16LE As Encoding = Encoding.Unicode
 Dim u16BE As Encoding = Encoding.BigEndianUnicode
 Dim u32 As Encoding = 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)

 End Sub


 Public Shared Sub PrintCountsAndBytes(chars() As Char, enc As Encoding)

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

 ' Display the exact byte count.
 Dim iBC As Integer = enc.GetByteCount(chars)
 Console.Write(" {0,-3}", iBC)

 ' Display the maximum byte count.
 Dim iMBC As Integer = enc.GetMaxByteCount(chars.Length)
 Console.Write(" {0,-3} :", iMBC)

 ' Encode the array of chars.
 Dim bytes As Byte() = enc.GetBytes(chars)

 ' Display all the encoded bytes.
 PrintHexBytes(bytes)

 End Sub


 Public Shared Sub PrintHexBytes(bytes() As Byte)

 If bytes Is Nothing OrElse bytes.Length = 0 Then
 Console.WriteLine("<none>")
 Else
 Dim i As Integer
 For i = 0 To bytes.Length - 1
 Console.Write("{0:X2} ", bytes(i))
 Next i
 Console.WriteLine()
 End If

 End Sub

End Class


'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

Remarks

For information about the encodings supported by .NET and a discussion of which Unicode encoding to use, see Character Encoding in .NET.

The UnicodeEncoding object that is returned by this property may not have the appropriate behavior for your app. 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 little endian UnicodeEncoding object whose fallback is either an EncoderFallbackException or a DecoderFallbackException, as the following example illustrates.

using System;
using System.Text;

public class Example
{
 public static void Main()
 {
 byte[] bytes = { 0x20, 0x00, 0x01, 0xD8, 0x68, 0x00, 0xA7, 0x00 };
 Encoding enc = new UnicodeEncoding(false, true, true);
 
 try {
 string value = enc.GetString(bytes);
 Console.WriteLine();
 Console.WriteLine("'{0}'", value);
 }
 catch (DecoderFallbackException e) { 
 Console.WriteLine("Unable to decode {0} at index {1}", 
 ShowBytes(e.BytesUnknown), e.Index);
 }
 }

 private static string ShowBytes(byte[] bytes) 
 {
 string returnString = null;
 foreach (var byteValue in bytes)
 returnString += String.Format("0x{0:X2} ", byteValue);

 return returnString.Trim();
 }
}
// The example displays the following output:
// Unable to decode 0x01 0xD8 at index 4
Imports System.Text

Module Example
 Public Sub Main()
 Dim bytes() As Byte = { &h20, &h00, &h01, &hD8, &h68, &h00, &hA7, &h00}
 Dim enc As Encoding = New UnicodeEncoding(False, True, True)
 
 Try
 Dim value As String = enc.GetString(bytes)
 Console.WriteLine()
 Console.WriteLine("'{0}'", value)
 Catch e As DecoderFallbackException 
 Console.WriteLine("Unable to decode {0} at index {1}", 
 ShowBytes(e.BytesUnknown), e.Index)
 End Try
 End Sub
 
 Private Function ShowBytes(bytes As Byte()) As String
 Dim returnString As String = Nothing
 For Each byteValue In bytes
 returnString += String.Format("0x{0:X2} ", byteValue)
 Next
 Return returnString.Trim()
 End Function
End Module
' The example displays the following output:
' Unable to decode 0x01 0xD8 at index 4

Applies to

See also


Feedback

Was this page helpful?