Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public Class UTF8Encoding Inherits Encoding
Dim instance As UTF8Encoding
[SerializableAttribute] [ComVisibleAttribute(true)] public class UTF8Encoding : Encoding
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class UTF8Encoding : public Encoding
/** @attribute SerializableAttribute() */ /** @attribute ComVisibleAttribute(true) */ public class UTF8Encoding extends Encoding
SerializableAttribute ComVisibleAttribute(true) public class UTF8Encoding extends Encoding
NotesLe codage est le processus de transformation d'un jeu de caractères Unicode en une séquence d'octets. Le décodage est le processus inverse ; il consiste à transformer une séquence d'octets codés en un jeu de caractères Unicode.
La norme Unicode assigne un point de code (nombre) à chaque caractère de chaque script pris en charge. Le format UTF (Unicode Transformation Format) permet de coder ce point de code. La norme Unicode version 3.2 utilise les formats UTF suivants :
-
UTF-8 qui représente chaque point de code sous la forme d'une séquence d'un à quatre octets.
-
UTF-16 qui représente chaque point de code sous la forme d'une séquence d'un à deux entiers 16 bits.
-
UTF-32 qui représente chaque point de code sous la forme d'un entier 32 bits.
La méthode GetByteCount détermine le nombre d'octets entraînant le codage d'un jeu de caractères Unicode, et la méthode GetBytes exécute ce codage.
De même, la méthode GetCharCount détermine le nombre de caractères entraînant le décodage d'une séquence d'octets, et les méthodes GetChars et GetString procèdent au décodage effectif.
Le cas échéant, UTF8Encoding fournit un préambule, c'est-à-dire un tableau d'octets que vous pouvez ajouter en tant que préfixe à la séquence d'octets résultant du processus de codage. Si le préambule contient une marque d'ordre d'octet (point de code U+FEFF), il aide le décodeur à déterminer l'ordre d'octet et le format UTF. La marque d'ordre d'octet Unicode est sérialisée sous la forme EF BB BF (format hexadécimal). La méthode GetPreamble retourne un tableau d'octets qui contient la marque d'ordre d'octet.
Pour plus d'informations sur le codage Unicode, l'ordre d'octet et les marques d'ordre d'octet, consultez la norme Unicode à l'adresse www.unicode.org.
Remarque |
|---|
| Pour activer la détection d'erreurs et rendre l'instance de classe plus sécurisée, utilisez le constructeur UTF8Encoding qui prend un paramètre throwOnInvalidBytes et définit ce paramètre avec la valeur true. Avec la détection d'erreurs, une méthode qui détecte une séquence non valide de caractères ou d'octets lève une exception ArgumentException. Sans détection d'erreurs, aucune exception n'est levée, et la séquence non valide est généralement ignorée. |
UTF8Encoding correspond à la page de codes 65001 de Windows.
Remarque |
|---|
| L'état d'un objet codé UTF-8 n'est pas préservé si l'objet est sérialisé et désérialisé à l'aide de différentes versions du .NET Framework. |
ExempleL'exemple de code suivant illustre l'utilisation de UTF8Encoding pour coder une chaîne de caractères Unicode et la stocker dans le tableau d'octets. Notez qu'il n'y a aucune perte de données lorsque encodedBytes est décodé à nouveau en chaîne.
Imports System Imports System.Text Imports Microsoft.VisualBasic.Strings Class UTF8EncodingExample Public Shared Sub Main() ' Create a UTF-8 encoding. Dim utf8 As New UTF8Encoding() ' A Unicode string with two characters outside an 8-bit code range. Dim unicodeString As String = _ "This unicode string contains two characters " & _ "with codes outside an 8-bit code range, " & _ "Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")." Console.WriteLine("Original string:") Console.WriteLine(unicodeString) ' Encode the string. Dim encodedBytes As Byte() = utf8.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 = utf8.GetString(encodedBytes) Console.WriteLine() Console.WriteLine("Decoded bytes:") Console.WriteLine(decodedString) End Sub End Class
using System; using System.Text; class UTF8EncodingExample { public static void Main() { // Create a UTF-8 encoding. UTF8Encoding utf8 = new UTF8Encoding(); // A Unicode string with two characters outside an 8-bit code range. String unicodeString = "This unicode string contains two characters " + "with codes outside an 8-bit code range, " + "Pi (\u03a0) and Sigma (\u03a3)."; Console.WriteLine("Original string:"); Console.WriteLine(unicodeString); // Encode the string. Byte[] encodedBytes = utf8.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 = utf8.GetString(encodedBytes); Console.WriteLine(); Console.WriteLine("Decoded bytes:"); Console.WriteLine(decodedString); } }
using namespace System; using namespace System::Text; using namespace System::Collections; int main() { // Create a UTF-8 encoding. UTF8Encoding^ utf8 = gcnew UTF8Encoding; // A Unicode string with two characters outside an 8-bit code range. String^ unicodeString = L"This unicode string contains two characters with codes outside an 8-bit code range, Pi (\u03a0) and Sigma (\u03a3)."; Console::WriteLine( "Original string:" ); Console::WriteLine( unicodeString ); // Encode the string. array<Byte>^encodedBytes = utf8->GetBytes( unicodeString ); Console::WriteLine(); Console::WriteLine( "Encoded bytes:" ); IEnumerator^ myEnum = encodedBytes->GetEnumerator(); while ( myEnum->MoveNext() ) { Byte b = safe_cast<Byte>(myEnum->Current); Console::Write( "[{0}]", b ); } Console::WriteLine(); // Decode bytes back to string. // Notice Pi and Sigma characters are still present. String^ decodedString = utf8->GetString( encodedBytes ); Console::WriteLine(); Console::WriteLine( "Decoded bytes:" ); Console::WriteLine( decodedString ); }
import System.*; import System.Text.*; class UTF8EncodingExample { public static void main(String[] args) { // Create a UTF-8 encoding. UTF8Encoding utf8 = new UTF8Encoding(); // A Unicode string with two characters outside an 8-bit code range. String unicodeString = "This unicode string contains two characters " + "with codes outside an 8-bit code range, " + "Pi (\u03a0) and Sigma (\u03a3)."; Console.WriteLine("Original string:"); Console.WriteLine(unicodeString); // Encode the string. ubyte encodedBytes[] = utf8.GetBytes(unicodeString); Console.WriteLine(); Console.WriteLine("Encoded bytes:"); for (int iCtr = 0; iCtr < encodedBytes.length; iCtr++) { ubyte b = encodedBytes[iCtr]; Console.Write("[{0}]", String.valueOf(b)); } Console.WriteLine(); // Decode bytes back to string. // Notice Pi and Sigma characters are still present. String decodedString = utf8.GetString(encodedBytes); Console.WriteLine(); Console.WriteLine("Decoded bytes:"); Console.WriteLine(decodedString); } //main } //UTF8EncodingExample
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ