Char.ConvertFromUtf32(Int32) Metoda

Definicja

Konwertuje określony punkt kodu Unicode na ciąg zakodowany w formacie UTF-16.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

Parametry

utf32
Int32

21-bitowy punkt kodu Unicode.A 21-bit Unicode code point.

Zwraca

String

Ciąg składający się z jednego Char obiektu lub dwuskładnikowej pary Char obiektów równoważnych z punktem kodu określonym przez utf32 parametr.A string consisting of one Char object or a surrogate pair of Char objects equivalent to the code point specified by the utf32 parameter.

Wyjątki

utf32 nie jest prawidłowym 21-bitowym punktem kodu Unicode w zakresie od U + 0 do U + 10FFFF, z wyłączeniem pary surogatów od U + D800 do U + DFFF.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.

Przykłady

Poniższy przykład kodu demonstruje ConvertToUtf32 ConvertFromUtf32 metody i.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

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

*/
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
'

Uwagi

Użyj tej metody, aby skonwertować 21-bitowy punkt kodu Unicode na zakodowany ciąg UTF-16 przed przetestowaniem ciągu za pomocą metod takich jak IsLowSurrogate(Char) i IsHighSurrogate(Char) .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).

Prawidłowy punkt kodu poza podstawową płaszczyzną wielojęzyczną (BMP) zawsze zapewnia prawidłową parę surogatów.A valid code point outside the Basic Multilingual Plane (BMP) always yields a valid surrogate pair. Jednak prawidłowy punkt kodu w BMP może nie dać prawidłowego wyniku zgodnie ze standardem Unicode, ponieważ w konwersji nie jest używane przetwarzanie lingwistyczne.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. Z tego powodu należy użyć System.Text.UTF32Encoding klasy do konwersji zbiorczych danych UTF-32 do zbiorczych danych UTF-16.For that reason, use the System.Text.UTF32Encoding class to convert bulk UTF-32 data into bulk UTF-16 data.

Dotyczy

Zobacz też