Note

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

Access to this page requires authorization. You can try .

Char.ConvertFromUtf32(Int32) Method

Definition

Namespace:
System
Assemblies:
mscorlib.dll, System.Runtime.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Char.cs
Source:
Char.cs
Source:
Char.cs
Source:
Char.cs
Source:
Char.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.

Converts the specified Unicode code point into a UTF-16 encoded string.

public:
 static System::String ^ ConvertFromUtf32(int utf32);
public static string ConvertFromUtf32(int utf32);
static member ConvertFromUtf32 : int -> string
Public Shared Function ConvertFromUtf32 (utf32 As Integer) As String

Parameters

utf32
Int32

A 21-bit Unicode code point.

Returns

A string consisting of one Char object or a surrogate pair of Char objects equivalent to the code point specified by the utf32 parameter.

Exceptions

utf32 is not a valid 21-bit Unicode code point ranging from U+0 through U+10FFFF, excluding the surrogate pair range from U+D800 through U+DFFF.

Examples

The following code example demonstrates the ConvertToUtf32 and ConvertFromUtf32 methods.

// This example demonstrates the Char.ConvertFromUtf32() method
// and Char.ConvertToUtf32() overloads.
using System;

class Sample
{
 public static void Main()
 {
 int letterA = 0x0041; //U+00041 = LATIN CAPITAL LETTER A
 int music = 0x1D161; //U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
 string s1;
 string comment = "Create a UTF-16 encoded string from a code point.";
 string comment1b = "Create a code point from a UTF-16 encoded string.";
 string comment2b = "Create a code point from a surrogate pair at a certain position in a string.";
 string comment2c = "Create a code point from a high surrogate and a low surrogate code point.";

// Convert code point U+0041 to UTF-16. The UTF-16 equivalent of
// U+0041 is a Char with hexadecimal value 0041.

 Console.WriteLine(comment);
 s1 = Char.ConvertFromUtf32(letterA);
 Console.Write(" 1a) 0x{0:X} => ", letterA);
 Show(s1);
 Console.WriteLine();

// Convert the lone UTF-16 character to a code point.

 Console.WriteLine(comment1b);
 letterA = Char.ConvertToUtf32(s1, 0);
 Console.Write(" 1b) ");
 Show(s1);
 Console.WriteLine(" => 0x{0:X}", letterA);
 Console.WriteLine();

// -------------------------------------------------------------------

// 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(comment);
 s1 = Char.ConvertFromUtf32(music);
 Console.Write(" 2a) 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(comment2b);
 music = Char.ConvertToUtf32(s1, 0);
 Console.Write(" 2b) ");
 Show(s1);
 Console.WriteLine(" => 0x{0:X}", music);

// Convert the high and low characters in the surrogate pair into a code point.

 Console.WriteLine(comment2c);
 music = Char.ConvertToUtf32(s1[0], s1[1]);
 Console.Write(" 2c) ");
 Show(s1);
 Console.WriteLine(" => 0x{0:X}", music);
 }

 private static void Show(string s)
 {
 for (int x = 0; x < s.Length; x++)
 {
 Console.Write("0x{0:X}{1}",
 (int)s[x],
 ((x == s.Length-1)? String.Empty : ", "));
 }
 }
}
/*
This example produces the following results:

Create a UTF-16 encoded string from a code point.
 1a) 0x41 => 0x41
Create a code point from a UTF-16 encoded string.
 1b) 0x41 => 0x41

Create a UTF-16 encoded string from a code point.
 2a) 0x1D161 => 0xD834, 0xDD61
Create a code point from a surrogate pair at a certain position in a string.
 2b) 0xD834, 0xDD61 => 0x1D161
Create a code point from a high surrogate and a low surrogate code point.
 2c) 0xD834, 0xDD61 => 0x1D161

*/
open System

let show (s: string) =
 for x = 0 to s.Length - 1 do
 printf $"""0x{int s[x]:X}{if x = s.Length - 1 then String.Empty else ", "}""" 

[<EntryPoint>]
let main _ =
 let letterA = 0x0041 //U+00041 = LATIN CAPITAL LETTER A
 let music = 0x1D161 //U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
 let comment = "Create a UTF-16 encoded string from a code point."
 let comment1b = "Create a code point from a UTF-16 encoded string."
 let comment2b = "Create a code point from a surrogate pair at a certain position in a string."
 let comment2c = "Create a code point from a high surrogate and a low surrogate code point."

// Convert code point U+0041 to UTF-16. The UTF-16 equivalent of
// U+0041 is a Char with hexadecimal value 0041.

 printfn $"{comment}"
 let s1 = Char.ConvertFromUtf32 letterA
 printf $" 1a) 0x{letterA:X} => "
 show s1
 printfn ""

// Convert the lone UTF-16 character to a code point.

 printfn $"{comment1b}"
 let letterA = Char.ConvertToUtf32(s1, 0)
 printf " 1b) "
 show s1
 printfn $" => 0x{letterA:X}"
 printfn ""

// -------------------------------------------------------------------

// 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.

 printfn $"{comment}"
 let s1 = Char.ConvertFromUtf32 music
 printf $" 2a) 0x{music:X} => "
 show s1
 printfn ""

// Convert the surrogate pair in the string at index position
// zero to a code point.

 printfn $"{comment2b}" 
 let music = Char.ConvertToUtf32(s1, 0)
 printf " 2b) "
 show s1
 printfn $" => 0x{music:X}"

// Convert the high and low characters in the surrogate pair into a code point.

 printfn $"{comment2c}"
 let music = Char.ConvertToUtf32(s1[0], s1[1])
 printf " 2c) "
 show s1
 printfn $" => 0x{music:X}"

 0

// This example produces the following results:
//
// Create a UTF-16 encoded string from a code point.
// 1a) 0x41 => 0x41
// Create a code point from a UTF-16 encoded string.
// 1b) 0x41 => 0x41
//
// Create a UTF-16 encoded string from a code point.
// 2a) 0x1D161 => 0xD834, 0xDD61
// Create a code point from a surrogate pair at a certain position in a string.
// 2b) 0xD834, 0xDD61 => 0x1D161
// Create a code point from a high surrogate and a low surrogate code point.
// 2c) 0xD834, 0xDD61 => 0x1D161
Class Sample
 Public Shared Sub Main()
 Dim letterA As Integer = &H41 'U+00041 = LATIN CAPITAL LETTER A
 Dim music As Integer = &H1D161 'U+1D161 = MUSICAL SYMBOL SIXTEENTH NOTE
 Dim s1 As String
 Dim comment As String = "Create a UTF-16 encoded string from a code point."
 Dim comment1b As String = "Create a code point from a UTF-16 encoded string."
 Dim comment2b As String = "Create a code point from a surrogate pair at a certain position in a string."
 Dim comment2c As String = "Create a code point from a high surrogate and a low surrogate code point."
 
 ' Convert code point U+0041 to UTF-16. The UTF-16 equivalent of 
 ' U+0041 is a Char with hexadecimal value 0041.

 Console.WriteLine(comment)
 s1 = [Char].ConvertFromUtf32(letterA)
 Console.Write(" 1a) 0x{0:X} => ", letterA)
 Show(s1)
 Console.WriteLine()
 
 ' Convert the lone UTF-16 character to a code point.

 Console.WriteLine(comment1b)
 letterA = [Char].ConvertToUtf32(s1, 0)
 Console.Write(" 1b) ")
 Show(s1)
 Console.WriteLine(" => 0x{0:X}", letterA)
 Console.WriteLine()
 
 ' -------------------------------------------------------------------

 ' 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(comment)
 s1 = [Char].ConvertFromUtf32(music)
 Console.Write(" 2a) 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(comment2b)
 music = [Char].ConvertToUtf32(s1, 0)
 Console.Write(" 2b) ")
 Show(s1)
 Console.WriteLine(" => 0x{0:X}", music)
 
 ' Convert the high and low characters in the surrogate pair into a code point.

 Console.WriteLine(comment2c)
 music = [Char].ConvertToUtf32(s1.Chars(0), s1.Chars(1))
 Console.Write(" 2c) ")
 Show(s1)
 Console.WriteLine(" => 0x{0:X}", music)
 End Sub
 
 Private Shared Sub Show(s As String)
 Dim x As Integer
 If s.Length = 0 Then Exit Sub
 For x = 0 To s.Length - 1
 Console.Write("0x{0:X}{1}", _
 AscW(s.Chars(x)), _
 IIf(x = s.Length - 1, [String].Empty, ", "))
 Next 
 End Sub 
End Class 
'
'This example produces the following results:
'
'Create a UTF-16 encoded string from a code point.
' 1a) 0x41 => 0x41
'Create a code point from a UTF-16 encoded string.
' 1b) 0x41 => 0x41
'
'Create a UTF-16 encoded string from a code point.
' 2a) 0x1D161 => 0xD834, 0xDD61
'Create a code point from a surrogate pair at a certain position in a string.
' 2b) 0xD834, 0xDD61 => 0x1D161
'Create a code point from a high surrogate and a low surrogate code point.
' 2c) 0xD834, 0xDD61 => 0x1D161
'

Remarks

Use this method to convert a 21-bit Unicode code point to a UTF-16 encoded string before testing the string with methods such as IsLowSurrogate(Char) and IsHighSurrogate(Char).

A valid code point outside the Basic Multilingual Plane (BMP) always yields a valid surrogate pair. However, a valid code point within the BMP might not yield a valid result according to the Unicode standard because no linguistic processing is used in the conversion. For that reason, use the System.Text.UTF32Encoding class to convert bulk UTF-32 data into bulk UTF-16 data.

Applies to

See also


Feedback

Was this page helpful?