UTF8Encoding Конструкторы
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса UTF8Encoding.
Перегрузки
UTF8Encoding() |
Инициализирует новый экземпляр класса UTF8Encoding. |
UTF8Encoding(Boolean) |
Инициализирует новый экземпляр класса UTF8Encoding. Параметр указывает, нужно ли предоставлять метку порядка байтов Юникода. |
UTF8Encoding(Boolean, Boolean) |
Инициализирует новый экземпляр класса UTF8Encoding. Параметры указывают, должна ли предоставляться метка порядка байтов Юникода и следует ли создавать исключение при обнаружении недопустимой кодировки. |
UTF8Encoding()
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
Инициализирует новый экземпляр класса UTF8Encoding.
public:
UTF8Encoding();
public UTF8Encoding ();
Public Sub New ()
Примеры
В следующем примере создается новый UTF8Encoding экземпляр и отображается его имя.
using namespace System;
using namespace System::Text;
int main()
{
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
String^ encodingName = utf8->EncodingName;
Console::WriteLine( "Encoding name: {0}", encodingName );
}
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
UTF8Encoding utf8 = new UTF8Encoding();
String encodingName = utf8.EncodingName;
Console.WriteLine("Encoding name: " + encodingName);
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim utf8 As New UTF8Encoding()
Dim encodingName As String = utf8.EncodingName
Console.WriteLine("Encoding name: " & encodingName)
End Sub
End Class
Комментарии
Этот конструктор создает экземпляр , который не предоставляет метку порядка байтов Юникода и не создает исключение при обнаружении недопустимой кодировки.
Внимание!
В целях безопасности рекомендуется включить обнаружение ошибок, вызвав конструктор с параметром throwOnInvalidBytes
и задав для его значения true
значение .
См. также раздел
Применяется к
UTF8Encoding(Boolean)
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
Инициализирует новый экземпляр класса UTF8Encoding. Параметр указывает, нужно ли предоставлять метку порядка байтов Юникода.
public:
UTF8Encoding(bool encoderShouldEmitUTF8Identifier);
public UTF8Encoding (bool encoderShouldEmitUTF8Identifier);
new System.Text.UTF8Encoding : bool -> System.Text.UTF8Encoding
Public Sub New (encoderShouldEmitUTF8Identifier As Boolean)
Параметры
- encoderShouldEmitUTF8Identifier
- Boolean
Значение true
указывает, что метод GetPreamble() возвращает метку порядка байтов Юникода; в противном случае — значение false
.
Примеры
В следующем примере создается новый UTF8Encoding экземпляр и указывается, что метод должен выдавать префикс метки порядка байтов Юникода GetPreamble . Затем GetPreamble метод возвращает префикс метки порядка байтов в Юникоде.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
void ShowArray( Array^ theArray )
{
IEnumerator^ myEnum = theArray->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ o = safe_cast<Object^>(myEnum->Current);
Console::Write( "[{0}]", o );
}
Console::WriteLine();
}
int main()
{
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
UTF8Encoding^ utf8EmitBOM = gcnew UTF8Encoding( true );
Console::WriteLine( "utf8 preamble:" );
ShowArray( utf8->GetPreamble() );
Console::WriteLine( "utf8EmitBOM:" );
ShowArray( utf8EmitBOM->GetPreamble() );
}
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
UTF8Encoding utf8 = new UTF8Encoding();
UTF8Encoding utf8EmitBOM = new UTF8Encoding(true);
Console.WriteLine("utf8 preamble:");
ShowArray(utf8.GetPreamble());
Console.WriteLine("utf8EmitBOM:");
ShowArray(utf8EmitBOM.GetPreamble());
}
public static void ShowArray(Array theArray) {
foreach (Object o in theArray) {
Console.Write("[{0}]", o);
}
Console.WriteLine();
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim utf8 As New UTF8Encoding()
Dim utf8EmitBOM As New UTF8Encoding(True)
Console.WriteLine("utf8 preamble:")
ShowArray(utf8.GetPreamble())
Console.WriteLine("utf8EmitBOM:")
ShowArray(utf8EmitBOM.GetPreamble())
End Sub
Public Shared Sub ShowArray(theArray As Array)
Dim o As Object
For Each o In theArray
Console.Write("[{0}]", o)
Next o
Console.WriteLine()
End Sub
End Class
Комментарии
Этот конструктор создает экземпляр , который не создает исключение при обнаружении недопустимой кодировки.
Внимание!
В целях безопасности следует включить обнаружение ошибок, вызвав конструктор, включающий throwOnInvalidBytes
параметр , и задав для его значения true
значение .
Параметр encoderShouldEmitUTF8Identifier
управляет операцией GetPreamble метода . При true
значении метод возвращает массив байтов, содержащий метку порядка байтов Юникода (BOM) в формате UTF-8. Если false
задано значение , возвращается массив байтов нулевой длины. Однако установка значения encoderShouldEmitUTF8Identifier
true
не приводит к тому, что GetBytes метод будет префиксировать метку метки в начале массива байтов, а также не включать GetByteCount в число байтов количество байтов.
См. также раздел
Применяется к
UTF8Encoding(Boolean, Boolean)
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
Инициализирует новый экземпляр класса UTF8Encoding. Параметры указывают, должна ли предоставляться метка порядка байтов Юникода и следует ли создавать исключение при обнаружении недопустимой кодировки.
public:
UTF8Encoding(bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes);
public UTF8Encoding (bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes);
new System.Text.UTF8Encoding : bool * bool -> System.Text.UTF8Encoding
Public Sub New (encoderShouldEmitUTF8Identifier As Boolean, throwOnInvalidBytes As Boolean)
Параметры
- encoderShouldEmitUTF8Identifier
- Boolean
Значение true
указывает, что метод GetPreamble() должен возвращать метку порядка байтов Юникода; в противном случае — значение false
.
- throwOnInvalidBytes
- Boolean
Значение true
указывает, что следует создавать исключение при обнаружении недопустимой кодировки; в противном случае — значение false
.
Примеры
В следующем примере создается новый UTF8Encoding экземпляр , указывающий, что GetPreamble метод не должен выдавать префикс метки порядка байтов в Юникоде, а при обнаружении недопустимой кодировки должно возникать исключение. Поведение этого конструктора сравнивается с конструктором по умолчанию UTF8Encoding() , который не создает исключение при обнаружении недопустимой кодировки. Два UTF8Encoding экземпляра кодируют массив символов, содержащий два суррогата с высоким уровнем (U+D801 и U+D802) в строке, которая является недопустимой последовательностью символов; за высоким суррогатом всегда следует низкий суррогат.
using namespace System;
using namespace System::Text;
void ShowArray(Array^ theArray)
{
for each (Byte b in theArray) {
Console::Write( "{0:X2} ", b);
}
Console::WriteLine();
}
int main()
{
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
UTF8Encoding^ utf8ThrowException = gcnew UTF8Encoding(false,true);
// This array contains two high surrogates in a row (\uD801, \uD802).
array<Char>^chars = {'a','b','c',L'\xD801',L'\xD802','d'};
// The following method call will not throw an exception.
array<Byte>^bytes = utf8->GetBytes( chars );
ShowArray( bytes );
Console::WriteLine();
try {
// The following method call will throw an exception.
bytes = utf8ThrowException->GetBytes( chars );
}
catch (EncoderFallbackException^ e ) {
Console::WriteLine("{0} exception\nMessage:\n{1}",
e->GetType()->Name, e->Message);
}
}
using System;
using System.Text;
class Example
{
public static void Main()
{
UTF8Encoding utf8 = new UTF8Encoding();
UTF8Encoding utf8ThrowException = new UTF8Encoding(false, true);
// Create an array with two high surrogates in a row (\uD801, \uD802).
Char[] chars = new Char[] {'a', 'b', 'c', '\uD801', '\uD802', 'd'};
// The following method call will not throw an exception.
Byte[] bytes = utf8.GetBytes(chars);
ShowArray(bytes);
Console.WriteLine();
try {
// The following method call will throw an exception.
bytes = utf8ThrowException.GetBytes(chars);
ShowArray(bytes);
}
catch (EncoderFallbackException e) {
Console.WriteLine("{0} exception\nMessage:\n{1}",
e.GetType().Name, e.Message);
}
}
public static void ShowArray(Array theArray) {
foreach (Object o in theArray)
Console.Write("{0:X2} ", o);
Console.WriteLine();
}
}
// The example displays the following output:
// 61 62 63 EF BF BD EF BF BD 64
//
// EncoderFallbackException exception
// Message:
// Unable to translate Unicode character \uD801 at index 3 to specified code page.
Imports System.Text
Class Example
Public Shared Sub Main()
Dim utf8 As New UTF8Encoding()
Dim utf8ThrowException As New UTF8Encoding(False, True)
' Create an array with two high surrogates in a row (\uD801, \uD802).
Dim chars() As Char = {"a"c, "b"c, "c"c, ChrW(&hD801), ChrW(&hD802), "d"c}
' The following method call will not throw an exception.
Dim bytes As Byte() = utf8.GetBytes(chars)
ShowArray(bytes)
Console.WriteLine()
Try
' The following method call will throw an exception.
bytes = utf8ThrowException.GetBytes(chars)
ShowArray(bytes)
Catch e As EncoderFallbackException
Console.WriteLine("{0} exception{2}Message:{2}{1}",
e.GetType().Name, e.Message, vbCrLf)
End Try
End Sub
Public Shared Sub ShowArray(theArray As Array)
For Each o In theArray
Console.Write("{0:X2} ", o)
Next
Console.WriteLine()
End Sub
End Class
' The example displays the following output:
' 61 62 63 EF BF BD EF BF BD 64
'
' EncoderFallbackException exception
' Message:
' Unable to translate Unicode character \uD801 at index 3 to specified code page.
Комментарии
Параметр encoderShouldEmitUTF8Identifier
управляет операцией GetPreamble метода . При true
значении метод возвращает массив байтов, содержащий метку порядка байтов Юникода (BOM) в формате UTF-8. Если false
задано значение , возвращается массив байтов нулевой длины. Однако установка значения encoderShouldEmitUTF8Identifier
true
не приводит к тому, что GetBytes метод будет префиксировать метку метки в начале массива байтов, а также не включать GetByteCount в число байтов количество байтов.
Если throwOnInvalidBytes
имеет значение true
, метод, который обнаруживает недопустимую последовательность байтов System.ArgumentException , вызывает исключение. В противном случае метод не создает исключение, а недопустимая последовательность игнорируется.
Внимание!
В целях безопасности следует включить обнаружение ошибок, вызвав конструктор, включающий throwOnInvalidBytes
параметр , и задав для этого параметра значение true
.