Ce sujet n'a pas encore été évalué - Évaluez ce sujet

UnicodeEncoding, classe

Représente un codage UTF-16 de caractères Unicode.

Espace de noms: System.Text
Assembly : mscorlib (dans mscorlib.dll)
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class UnicodeEncoding : Encoding
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class UnicodeEncoding extends Encoding
SerializableAttribute 
ComVisibleAttribute(true) 
public class UnicodeEncoding extends Encoding
Non applicable.

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

L'encodeur peut utiliser l'ordre d'octet Big-endian (octet le plus significatif en premier) ou Little-endian (octet le moins significatif en premier). Par exemple, la majuscule latine A (point de code U+0041) est sérialisée comme suit (au format hexadécimal) :

  • Ordre d'octet Big-endian : 00 41

  • Ordre d'octet Little-endian : 41 00

Le cas échéant, UnicodeEncoding 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 comme suit (format hexadécimal) :

  • Ordre d'octet Big-endian : Fe FF

  • Ordre d'octet Little-endian : FF FE

Il est généralement plus efficace d'utiliser l'ordre d'octet natif pour stocker les caractères Unicode. Par exemple, il est préférable d'utiliser l'ordre d'octet avec primauté des octets de poids faible (little-endian) sur les plateformes little-endian, comme les ordinateurs Intel.

La méthode GetPreamble retourne un tableau d'octets qui contient la marque d'ordre d'octet. Si ce tableau d'octets est ajouté comme préambule à un flux de données codé, il aide le décodeur à identifier le format de codage utilisé.

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.

RemarqueRemarque :

Pour activer la détection d'erreurs et rendre l'instance de classe plus sécurisée, utilisez le constructeur UnicodeEncoding 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.

UnicodeEncoding correspond aux pages de codes 1200 (classement d'octets avec primauté des octets de poids faible (little-endian)) et 1201 (ordre d'octet avec primauté des octets de poids fort (Big-endian)) de Windows.

L'exemple suivant montre comment coder la chaîne de caractères Unicode en un tableau d'octets, à l'aide de UnicodeEncoding. Le tableau d'octets est décodé à nouveau en chaîne afin de démontrer l'absence de perte de données.

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);
    }
}

import System.*;
import System.Text.*;

class UnicodeEncodingExample
{
    public static void main(String[] args)
    {
        // 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.
        ubyte encodedBytes[] = unicode.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 = unicode.GetString(encodedBytes);
        Console.WriteLine();
        Console.WriteLine("Decoded bytes:");
        Console.WriteLine(decodedString);
    } //main
} //UnicodeEncodingExample

System.Object
   System.Text.Encoding
    System.Text.UnicodeEncoding
Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows Server 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

Microsoft .NET Framework 3.0 est pris en charge sur Windows Vista, Microsoft Windows XP SP2 et Windows Server 2003 SP1.

.NET Framework

Prise en charge dans : 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0

XNA Framework

Prise en charge dans : 1.0
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
© 2013 Microsoft. Tous droits réservés.