UnicodeEncoding Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en UTF-16-kodning av Unicode-tecken.
public ref class UnicodeEncoding : System::Text::Encoding
public class UnicodeEncoding : System.Text.Encoding
[System.Serializable]
public class UnicodeEncoding : System.Text.Encoding
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class UnicodeEncoding : System.Text.Encoding
type UnicodeEncoding = class
inherit Encoding
[<System.Serializable>]
type UnicodeEncoding = class
inherit Encoding
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type UnicodeEncoding = class
inherit Encoding
Public Class UnicodeEncoding
Inherits Encoding
- Arv
- Attribut
Exempel
I följande exempel visas hur du kodar en sträng med Unicode-tecken till en bytematris med hjälp av ett UnicodeEncoding objekt. Bytematrisen avkodas till en sträng för att visa att det inte finns någon dataförlust.
using System;
using System.Text;
class UnicodeEncodingExample {
public static void Main() {
// The encoding.
UnicodeEncoding unicode = new UnicodeEncoding();
// Create a string that contains Unicode characters.
String unicodeString =
"This Unicode string contains two characters " +
"with codes outside the traditional ASCII code range, " +
"Pi (\u03a0) and Sigma (\u03a3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
// Encode the string.
Byte[] encodedBytes = unicode.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Encoded bytes:");
foreach (Byte b in encodedBytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
// Decode bytes back to string.
// Notice Pi and Sigma characters are still present.
String decodedString = unicode.GetString(encodedBytes);
Console.WriteLine();
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class UnicodeEncodingExample
Public Shared Sub Main()
' The encoding.
Dim uni As New UnicodeEncoding()
' Create a string that contains Unicode characters.
Dim unicodeString As String = _
"This Unicode string contains two characters " & _
"with codes outside the traditional ASCII code range, " & _
"Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
' Encode the string.
Dim encodedBytes As Byte() = uni.GetBytes(unicodeString)
Console.WriteLine()
Console.WriteLine("Encoded bytes:")
Dim b As Byte
For Each b In encodedBytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
' Decode bytes back to string.
' Notice Pi and Sigma characters are still present.
Dim decodedString As String = uni.GetString(encodedBytes)
Console.WriteLine()
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub
End Class
I följande exempel används samma sträng som den föregående, förutom att den skriver kodade byte till en fil och prefixar byteströmmen med en byteordningsmarkering (BOM). Den läser sedan filen på två olika sätt: som en textfil med hjälp av ett StreamReader objekt och som en binär fil. Som förväntat innehåller ingen av de nyligen lästa strängarna bommen.
using System;
using System.IO;
using System.Text;
public class Example
{
public static void Main()
{
// Create a UTF-16 encoding that supports a BOM.
Encoding unicode = new UnicodeEncoding();
// A Unicode string with two characters outside an 8-bit code range.
String unicodeString =
"This Unicode string has 2 characters outside the " +
"ASCII range: \n" +
"Pi (\u03A0)), and Sigma (\u03A3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
Console.WriteLine();
// Encode the string.
Byte[] encodedBytes = unicode.GetBytes(unicodeString);
Console.WriteLine("The encoded string has {0} bytes.\n",
encodedBytes.Length);
// Write the bytes to a file with a BOM.
var fs = new FileStream(@".\UTF8Encoding.txt", FileMode.Create);
Byte[] bom = unicode.GetPreamble();
fs.Write(bom, 0, bom.Length);
fs.Write(encodedBytes, 0, encodedBytes.Length);
Console.WriteLine("Wrote {0} bytes to the file.\n", fs.Length);
fs.Close();
// Open the file using StreamReader.
var sr = new StreamReader(@".\UTF8Encoding.txt");
String newString = sr.ReadToEnd();
sr.Close();
Console.WriteLine("String read using StreamReader:");
Console.WriteLine(newString);
Console.WriteLine();
// Open the file as a binary file and decode the bytes back to a string.
fs = new FileStream(@".\UTF8Encoding.txt", FileMode.Open);
Byte[] bytes = new Byte[fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
fs.Close();
String decodedString = unicode.GetString(bytes);
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
// The example displays the following output:
// Original string:
// This Unicode string has 2 characters outside the ASCII range:
// Pi (π), and Sigma (Σ).
//
// The encoded string has 172 bytes.
//
// Wrote 174 bytes to the file.
//
// String read using StreamReader:
// This Unicode string has 2 characters outside the ASCII range:
// Pi (π), and Sigma (Σ).
//
// Decoded bytes:
// This Unicode string has 2 characters outside the ASCII range:
// Pi (π), and Sigma (Σ).
Imports System.IO
Imports System.Text
Class Example
Public Shared Sub Main()
' Create a UTF-16 encoding that supports a BOM.
Dim unicode As New UnicodeEncoding()
' A Unicode string with two characters outside an 8-bit code range.
Dim unicodeString As String = _
"This Unicode string has 2 characters outside the " &
"ASCII range: " & vbCrLf &
"Pi (" & ChrW(&h03A0) & "), and Sigma (" & ChrW(&h03A3) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
Console.WriteLine()
' Encode the string.
Dim encodedBytes As Byte() = unicode.GetBytes(unicodeString)
Console.WriteLine("The encoded string has {0} bytes.",
encodedBytes.Length)
Console.WriteLine()
' Write the bytes to a file with a BOM.
Dim fs As New FileStream(".\UnicodeEncoding.txt", FileMode.Create)
Dim bom() As Byte = unicode.GetPreamble()
fs.Write(bom, 0, bom.Length)
fs.Write(encodedBytes, 0, encodedBytes.Length)
Console.WriteLine("Wrote {0} bytes to the file.", fs.Length)
fs.Close()
Console.WriteLine()
' Open the file using StreamReader.
Dim sr As New StreamReader(".\UnicodeEncoding.txt")
Dim newString As String = sr.ReadToEnd()
sr.Close()
Console.WriteLine("String read using StreamReader:")
Console.WriteLine(newString)
Console.WriteLine()
' Open the file as a binary file and decode the bytes back to a string.
fs = new FileStream(".\UnicodeEncoding.txt", FileMode.Open)
Dim bytes(fs.Length - 1) As Byte
fs.Read(bytes, 0, fs.Length)
fs.Close()
Dim decodedString As String = unicode.GetString(bytes)
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub
End Class
' The example displays the following output:
' Original string:
' This Unicode string has 2 characters outside the ASCII range:
' Pi (π), and Sigma (Σ).
'
' The encoded string has 172 bytes.
'
' Wrote 174 bytes to the file.
'
' String read using StreamReader:
' This Unicode string has 2 characters outside the ASCII range:
' Pi (π), and Sigma (Σ).
'
' Decoded bytes:
' This Unicode string has 2 characters outside the ASCII range:
' Pi (π), and Sigma (Σ).
Kommentarer
Kodning är processen att omvandla en uppsättning Unicode-tecken till en sekvens med byte. Avkodning är processen att omvandla en sekvens med kodade byte till en uppsättning Unicode-tecken.
Unicode Standard tilldelar en kodpunkt (ett tal) till varje tecken i varje skript som stöds. Ett Unicode Transformation Format (UTF) är ett sätt att koda kodpunkten. Unicode Standard använder följande UTF:er:
UTF-8, som representerar varje kodpunkt som en sekvens på en till fyra byte.
UTF-16, som representerar varje kodpunkt som en sekvens med ett till två 16-bitars heltal.
UTF-32, som representerar varje kodpunkt som ett 32-bitars heltal.
Mer information om UTF:er och andra kodningar som stöds av System.Text finns i Character Encoding i .NET Framework.
Klassen UnicodeEncoding representerar en UTF-16-kodning. Kodaren kan använda antingen stor endiansk byteordning (mest betydande byte först) eller lite endiansk byteordning (minst betydande byte först). Till exempel serialiseras latinsk versal bokstav A (kodpunkt U+0041) enligt följande (i hexadecimal):
Stor endiansk byteordning: 00 00 00 41
Lite endiansk byteordning: 41 00 00 00
Det är vanligtvis mer effektivt att lagra Unicode-tecken med hjälp av den interna byteordningen för en viss plattform. Det är till exempel bättre att använda den lilla endianska byteordningen på små endianska plattformar, till exempel Intel-datorer. Klassen UnicodeEncoding motsvarar Windows kodsidorna 1200 (lite endiansk byteordning) och 1201 (stor endiansk byteordning). Du kan fastställa "endianness" för en viss arkitektur genom att anropa BitConverter.IsLittleEndian metoden.
UnicodeEncoding Om du vill kan objektet ange ett byteordningsmärke (BOM), som är en matris med byte som kan prefixeras till sekvensen med byte som härrör från kodningsprocessen. Om ingressen innehåller ett byteordningsmärke (BOM) hjälper det avkodaren att fastställa byteordningen och transformeringsformatet eller UTF.
Om instansen UnicodeEncoding är konfigurerad för att tillhandahålla en strukturlista kan du hämta den GetPreamble genom att anropa metoden. Annars returnerar metoden en tom matris. Observera att även om ett UnicodeEncoding objekt har konfigurerats för bomstöd måste du inkludera strukturlistan i början av den kodade byteströmmen efter behov. Kodningsmetoderna för UnicodeEncoding klassen gör inte detta automatiskt.
Caution
Om du vill aktivera felidentifiering och göra klassinstansen säkrare bör du instansiera ett UnicodeEncoding objekt genom att anropa UnicodeEncoding(Boolean, Boolean, Boolean) konstruktorn och ange dess throwOnInvalidBytes argument till true. Med felidentifiering genererar en metod som identifierar en ogiltig sekvens med tecken eller byte en ArgumentException. Utan felidentifiering genereras inget undantag och den ogiltiga sekvensen ignoreras vanligtvis.
Du kan instansiera ett UnicodeEncoding objekt på flera olika sätt, beroende på om du vill ange ett byteordningsmärke (BOM), om du vill ha stor endiansk eller lite endiansk kodning och om du vill aktivera felidentifiering. I följande tabell visas konstruktorerna UnicodeEncoding och egenskaperna Encoding som returnerar ett UnicodeEncoding objekt.
| Medlem | Byteordning | STRUKTURLISTA | Feldetektering |
|---|---|---|---|
| BigEndianUnicode | Big-endian | Yes | Nej (reserv för ersättning) |
| Encoding.Unicode | Little-endian | Yes | Nej (reserv för ersättning) |
| UnicodeEncoding.UnicodeEncoding() | Little-endian | Yes | Nej (reserv för ersättning) |
| UnicodeEncoding(Boolean, Boolean) | Konfigureringsbart | Konfigureringsbart | Nej (reserv för ersättning) |
| UnicodeEncoding.UnicodeEncoding(Boolean, Boolean, Boolean) | Konfigureringsbart | Konfigureringsbart | Konfigureringsbart |
Metoden GetByteCount avgör hur många byte som resulterar i kodning av en uppsättning Unicode-tecken och GetBytes metoden utför den faktiska kodningen.
GetCharCount På samma sätt avgör metoden hur många tecken som resulterar i avkodning av en sekvens med byte, och GetChars metoderna och GetString utför den faktiska avkodningen.
För en kodare eller avkodare som kan spara tillståndsinformation vid kodning eller avkodning av data som sträcker sig över flera block (till exempel en sträng med 1 miljon tecken som kodas i segment med 100 000 tecken) använder GetEncoder du egenskaperna och GetDecoder .
Konstruktorer
| Name | Description |
|---|---|
| UnicodeEncoding() |
Initierar en ny instans av UnicodeEncoding klassen. |
| UnicodeEncoding(Boolean, Boolean, Boolean) |
Initierar en ny instans av UnicodeEncoding klassen. Parametrar anger om du vill använda den stora slutpunktsbyteordningen, om du vill ange ett Unicode-byteordningsmärke och om ett undantag ska utlösas när en ogiltig kodning identifieras. |
| UnicodeEncoding(Boolean, Boolean) |
Initierar en ny instans av UnicodeEncoding klassen. Parametrar anger om du vill använda den stora slutpunktsbyteordningen GetPreamble() och om metoden returnerar ett Unicode-byteordningsmärke. |
Fält
| Name | Description |
|---|---|
| CharSize |
Representerar Unicode-teckenstorleken i byte. Det här fältet är en konstant. |
Egenskaper
| Name | Description |
|---|---|
| BodyName |
När det åsidosätts i en härledd klass får du ett namn för den aktuella kodningen som kan användas med e-postagentens brödtexttaggar. (Ärvd från Encoding) |
| CodePage |
När du åsidosättas i en härledd klass hämtar du kodsideidentifieraren för den aktuella Encoding. (Ärvd från Encoding) |
| DecoderFallback |
Hämtar eller anger objektet DecoderFallback för det aktuella Encoding objektet. (Ärvd från Encoding) |
| EncoderFallback |
Hämtar eller anger objektet EncoderFallback för det aktuella Encoding objektet. (Ärvd från Encoding) |
| EncodingName |
När den åsidosättas i en härledd klass hämtar den läsbara beskrivningen av den aktuella kodningen. (Ärvd från Encoding) |
| HeaderName |
När det åsidosätts i en härledd klass får du ett namn för den aktuella kodningen som kan användas med rubriktaggar för e-postagenten. (Ärvd från Encoding) |
| IsBrowserDisplay |
När den åsidosättas i en härledd klass får ett värde som anger om den aktuella kodningen kan användas av webbläsarklienter för att visa innehåll. (Ärvd från Encoding) |
| IsBrowserSave |
När det åsidosätts i en härledd klass får ett värde som anger om den aktuella kodningen kan användas av webbläsarklienter för att spara innehåll. (Ärvd från Encoding) |
| IsMailNewsDisplay |
När den åsidosättas i en härledd klass får du ett värde som anger om den aktuella kodningen kan användas av e-post- och nyhetsklienter för att visa innehåll. (Ärvd från Encoding) |
| IsMailNewsSave |
När den åsidosätts i en härledd klass får du ett värde som anger om den aktuella kodningen kan användas av e-post- och nyhetsklienter för att spara innehåll. (Ärvd från Encoding) |
| IsReadOnly |
När den åsidosättas i en härledd klass får du ett värde som anger om den aktuella kodningen är skrivskyddad. (Ärvd från Encoding) |
| IsSingleByte |
När det åsidosättas i en härledd klass får du ett värde som anger om den aktuella kodningen använder kodpunkter med en enda byte. (Ärvd från Encoding) |
| Preamble |
När det åsidosätts i en härledd klass returneras ett intervall som innehåller sekvensen med byte som anger den kodning som används. (Ärvd från Encoding) |
| WebName |
När det åsidosätts i en härledd klass, hämtar det namn som registrerats med IANA (Internet Assigned Numbers Authority) för den aktuella kodningen. (Ärvd från Encoding) |
| WindowsCodePage |
När den åsidosätts i en härledd klass hämtar den kodsida för Windows operativsystem som närmast motsvarar den aktuella kodningen. (Ärvd från Encoding) |
Metoder
| Name | Description |
|---|---|
| Clone() |
När du åsidosättas i en härledd klass skapar du en ytlig kopia av det aktuella Encoding objektet. (Ärvd från Encoding) |
| Equals(Object) |
Avgör om det angivna Object är lika med det aktuella UnicodeEncoding objektet. |
| GetByteCount(Char[], Int32, Int32) |
Beräknar antalet byte som skapas genom att koda en uppsättning tecken från den angivna teckenmatrisen. |
| GetByteCount(Char[]) |
När det åsidosättas i en härledd klass beräknas antalet byte som skapas genom att koda alla tecken i den angivna teckenmatrisen. (Ärvd från Encoding) |
| GetByteCount(Char*, Int32) |
Beräknar antalet byte som skapas genom att koda en uppsättning tecken med början vid den angivna teckenpekaren. |
| GetByteCount(Char*, Int32) |
När du åsidosättas i en härledd klass beräknar du antalet byte som genereras genom att koda en uppsättning tecken med början vid den angivna teckenpekaren. (Ärvd från Encoding) |
| GetByteCount(ReadOnlySpan<Char>) |
När det åsidosättas i en härledd klass beräknas antalet byte som genereras genom att koda tecknen i det angivna teckenintervallet. (Ärvd från Encoding) |
| GetByteCount(String, Int32, Int32) |
När du åsidosättas i en härledd klass beräknar du antalet byte som genereras genom att koda en uppsättning tecken från den angivna strängen. (Ärvd från Encoding) |
| GetByteCount(String) |
Beräknar antalet byte som skapas genom att koda tecknen i den angivna strängen. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Kodar en uppsättning tecken från den angivna teckenmatrisen till den angivna bytematrisen. |
| GetBytes(Char[], Int32, Int32) |
När den åsidosättas i en härledd klass kodar en uppsättning tecken från den angivna teckenmatrisen till en sekvens med byte. (Ärvd från Encoding) |
| GetBytes(Char[]) |
När det åsidosättas i en härledd klass kodas alla tecken i den angivna teckenmatrisen till en sekvens med byte. (Ärvd från Encoding) |
| GetBytes(Char*, Int32, Byte*, Int32) |
Kodar en uppsättning tecken som börjar vid den angivna teckenpekaren till en sekvens med byte som lagras från och med den angivna bytepekaren. |
| GetBytes(Char*, Int32, Byte*, Int32) |
När den åsidosätts i en härledd klass kodas en uppsättning tecken som börjar vid den angivna teckenpekaren till en sekvens med byte som lagras från och med den angivna bytepekaren. (Ärvd från Encoding) |
| GetBytes(ReadOnlySpan<Char>, Span<Byte>) |
När det åsidosättas i en härledd klass kodar till ett intervall med byte en uppsättning tecken från det angivna skrivskyddade intervallet. (Ärvd från Encoding) |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
Kodar en uppsättning tecken från den angivna String i den angivna bytematrisen. |
| GetBytes(String, Int32, Int32) |
När det åsidosättas i en härledd klass kodar till en matris med byte det antal tecken som anges av |
| GetBytes(String) |
Kodar en uppsättning tecken från den angivna strängen till den angivna bytematrisen. |
| GetBytes(String) |
När det åsidosättas i en härledd klass kodar alla tecken i den angivna strängen till en sekvens med byte. (Ärvd från Encoding) |
| GetCharCount(Byte[], Int32, Int32) |
Beräknar antalet tecken som genereras genom avkodning av en sekvens med byte från den angivna bytematrisen. |
| GetCharCount(Byte[]) |
När det åsidosättas i en härledd klass beräknas antalet tecken som genereras genom avkodning av alla byte i den angivna bytematrisen. (Ärvd från Encoding) |
| GetCharCount(Byte*, Int32) |
Beräknar antalet tecken som genereras genom avkodning av en sekvens med byte som börjar vid den angivna bytepekaren. |
| GetCharCount(Byte*, Int32) |
När det åsidosättas i en härledd klass beräknas antalet tecken som genereras genom avkodning av en sekvens med byte som börjar vid den angivna bytepekaren. (Ärvd från Encoding) |
| GetCharCount(ReadOnlySpan<Byte>) |
När det åsidosättas i en härledd klass beräknas antalet tecken som genereras genom avkodning av det angivna skrivskyddade byteintervallet. (Ärvd från Encoding) |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Avkodar en sekvens med byte från den angivna bytematrisen till den angivna teckenmatrisen. |
| GetChars(Byte[], Int32, Int32) |
När den åsidosättas i en härledd klass avkodas en sekvens med byte från den angivna bytematrisen till en uppsättning tecken. (Ärvd från Encoding) |
| GetChars(Byte[]) |
När de åsidosättas i en härledd klass avkodas alla byte i den angivna bytematrisen till en uppsättning tecken. (Ärvd från Encoding) |
| GetChars(Byte*, Int32, Char*, Int32) |
Avkodar en sekvens med byte som börjar vid den angivna bytepekaren till en uppsättning tecken som lagras från och med den angivna teckenpekaren. |
| GetChars(Byte*, Int32, Char*, Int32) |
När den åsidosätts i en härledd klass avkodas en sekvens med byte som börjar vid den angivna bytepekaren till en uppsättning tecken som lagras från och med den angivna teckenpekaren. (Ärvd från Encoding) |
| GetChars(ReadOnlySpan<Byte>, Span<Char>) |
När de åsidosättas i en härledd klass avkodas alla byte i det angivna skrivskyddade byteintervallet till ett teckenintervall. (Ärvd från Encoding) |
| GetDecoder() |
Hämtar en avkodare som konverterar en UTF-16-kodad sekvens med byte till en sekvens med Unicode-tecken. |
| GetEncoder() |
Hämtar en kodare som konverterar en sekvens med Unicode-tecken till en UTF-16-kodad sekvens med byte. |
| GetEncoder() |
När den åsidosätts i en härledd klass hämtar den en kodare som konverterar en sekvens med Unicode-tecken till en kodad sekvens med byte. (Ärvd från Encoding) |
| GetHashCode() |
Returnerar hash-koden för den aktuella instansen. |
| GetMaxByteCount(Int32) |
Beräknar det maximala antalet byte som genereras genom kodning av det angivna antalet tecken. |
| GetMaxCharCount(Int32) |
Beräknar det maximala antalet tecken som genereras genom avkodning av det angivna antalet byte. |
| GetPreamble() |
Returnerar ett Unicode-byteordningsmärke som är kodat i UTF-16-format, om konstruktorn för den här instansen begär ett byteordningsmärke. |
| GetString(Byte[], Int32, Int32) |
Avkodar ett intervall med byte från en bytematris till en sträng. |
| GetString(Byte[], Int32, Int32) |
När den åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen till en sträng. (Ärvd från Encoding) |
| GetString(Byte[]) |
När de åsidosättas i en härledd klass avkodas alla byte i den angivna bytematrisen till en sträng. (Ärvd från Encoding) |
| GetString(Byte*, Int32) |
När det åsidosättas i en härledd klass avkodas ett angivet antal byte som börjar vid en angiven adress till en sträng. (Ärvd från Encoding) |
| GetString(ReadOnlySpan<Byte>) |
När de åsidosättas i en härledd klass avkodas alla byte i det angivna byteintervallet till en sträng. (Ärvd från Encoding) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IsAlwaysNormalized() |
Hämtar ett värde som anger om den aktuella kodningen alltid normaliseras med standardnormaliseringsformuläret. (Ärvd från Encoding) |
| IsAlwaysNormalized(NormalizationForm) |
När den åsidosättas i en härledd klass får du ett värde som anger om den aktuella kodningen alltid normaliseras med hjälp av det angivna normaliseringsformuläret. (Ärvd från Encoding) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |