Char::ConvertToUtf32 Method (Char, Char)
Converts the value of a UTF-16 encoded surrogate pair into a Unicode code point.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- highSurrogate
-
Type:
System::Char
A high surrogate code unit (that is, a code unit ranging from U+D800 through U+DBFF).
- lowSurrogate
-
Type:
System::Char
A low surrogate code unit (that is, a code unit ranging from U+DC00 through U+DFFF).
Return Value
Type: System::Int32The 21-bit Unicode code point represented by the highSurrogate and lowSurrogate parameters.
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | highSurrogate is not in the range U+D800 through U+DBFF, or lowSurrogate is not in the range U+DC00 through U+DFFF. |
Use this method to convert a surrogate pair into a 21-bit Unicode code point. To convert UTF-16 data into UTF-32 data, use the System.Text::UTF32Encoding class.
Ordinarily, UTF-16 encoding represents a single Unicode character as a 16-bit code unit. However, it also supports surrogate pairs, which allow a single abstract character to be represented as two 16-bit code units. These two Char objects must have code units that range from U+D800 to U+DBFF for the first (high) surrogate and from U+DC00 to U+DFFF for the second (low) surrogate. Surrogate pairs are supported only by UTF-16 encoding. This method allows a character represented by a UTF-16 surrogate pair to be converted to a character using UTF-32 encoding.
The following code example demonstrates the ConvertToUtf32 and ConvertFromUtf32 methods.
// This example demonstrates the Char.ConvertFromUtf32() method // and Char.ConvertToUtf32() overloads. using namespace System; void Show( String^ s ) { // Console::Write( "0x{0:X}, 0x{1:X}", (int)s->get_Chars( 0 ), (int)s->get_Chars( 1 ) ); Console::Write( "0x{0:X}, 0x{1:X}", (int)s[ 0 ], (int)s[ 1 ] ); } int main() { int music = 0x1D161; //U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE String^ s1; String^ comment1a = "Create a UTF-16 encoded string from a code point."; String^ comment1b = "Create a code point from a surrogate pair at a certain position in a string."; String^ comment1c = "Create a code point from a high surrogate and a low surrogate code point."; // ------------------------------------------------------------------- // Convert the code point U+1D161 to UTF-16. The UTF-16 equivalent of // U+1D161 is a surrogate pair with hexadecimal values D834 and DD61. Console::WriteLine( comment1a ); s1 = Char::ConvertFromUtf32( music ); Console::Write( " 1a) 0x{0:X} => ", music ); Show( s1 ); Console::WriteLine(); // Convert the surrogate pair in the string at index position // zero to a code point. Console::WriteLine( comment1b ); music = Char::ConvertToUtf32( s1, 0 ); Console::Write( " 1b) " ); Show( s1 ); Console::WriteLine( " => 0x{0:X}", music ); // Convert the high and low characters in the surrogate pair into a code point. Console::WriteLine( comment1c ); music = Char::ConvertToUtf32( s1[ 0 ], s1[ 1 ] ); Console::Write( " 1c) " ); Show( s1 ); Console::WriteLine( " => 0x{0:X}", music ); } /* This example produces the following results: Create a UTF-16 encoded string from a code point. 1a) 0x1D161 => 0xD834, 0xDD61 Create a code point from a surrogate pair at a certain position in a string. 1b) 0xD834, 0xDD61 => 0x1D161 Create a code point from a high surrogate and a low surrogate code point. 1c) 0xD834, 0xDD61 => 0x1D161 */
Available since 8
.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1