Versión imprimible       Enviar     
Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
UnicodeEncoding (Clase)
Representa una codificación UTF-16 de caracteres Unicode.

Espacio de nombres: System.Text
Ensamblado: mscorlib (en mscorlib.dll)

Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class UnicodeEncoding
    Inherits Encoding
Visual Basic (Uso)
Dim instance As UnicodeEncoding
C#
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class UnicodeEncoding : Encoding
C++
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class UnicodeEncoding : public Encoding
J#
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class UnicodeEncoding extends Encoding
JScript
SerializableAttribute 
ComVisibleAttribute(true) 
public class UnicodeEncoding extends Encoding
XAML
No aplicable.

Codificar es el proceso de transformar un conjunto de caracteres Unicode en una secuencia de bytes. Descodificar es el proceso inverso; es transformar una secuencia de bytes codificados en un conjunto de caracteres Unicode.

El estándar Unicode asigna un punto de código (un número) a cada carácter en todas las secuencias de comandos compatibles. Un Formato de transformación Unicode (UTF) es un método para codificar ese punto de código. El estándar Unicode versión 3.2 utiliza las siguientes codificaciones UTF:

  • UTF-8, que representa cada punto de código como una secuencia de uno a cuatro bytes.

  • UTF-16, que representa cada punto de código como una secuencia de uno a dos enteros de 16 bits.

  • UTF-32, que representa cada punto de código como un entero de 32 bits.

El método GetByteCount determina cuántos bytes resultan de codificar un conjunto de caracteres Unicode, y el método GetBytes realiza la codificación real.

Igualmente, el método GetCharCount determina el número de caracteres resultante en la descodificación de una secuencia de bytes, y los métodos GetChars y GetString realizan la descodificación real.

El codificador puede utilizar el orden de bytes big-endian (primero el byte más significativo) o el orden de bytes little-endian (primero el byte menos significativo). Por ejemplo, la letra mayúscula latina A (punto de código U+0041) se serializa del siguiente modo (en hexadecimal):

  • Orden de bytes big-endian: 00 41

  • Orden de bytes little-endian: 41 00

Opcionalmente, UnicodeEncoding proporciona un preámbulo, que es una matriz de bytes que se puede anteponer a la secuencia de bytes resultante del proceso de codificación. Si el preámbulo contiene una marca de orden de bytes (punto de código U+FEFF), ayudará al descodificador a determinar el orden de bytes y el formato de la transformación o UTF. La marca de orden de bytes Unicode se serializa de la siguiente manera (en hexadecimal):

  • Orden de bytes big-endian: FE FF

  • Orden de bytes little-endian: FF FE

Generalmente es más eficaz almacenar caracteres Unicode utilizando el orden de bytes nativo. Por ejemplo, es mejor utilizar el orden de bytes little-endian en plataformas little-endian, como los equipos Intel.

El método GetPreamble devuelve una matriz de bytes que contiene la marca de orden de bytes. Si esta matriz de bytes se antepone a una secuencia codificada, ayudará al descodificador a identificar el formato de codificación utilizado.

Para obtener más información acerca de la codificación Unicode, del orden de bytes y de la marca de orden de bytes, vea el estándar Unicode en www.unicode.org.

NotaNota:

Para habilitar la detección de errores y hacer que la instancia de clase sea más segura, utilice el constructor UnicodeEncoding que toma un parámetro throwOnInvalidBytes y establece ese parámetro en true. Con la detección de errores, el método que detecte una secuencia de caracteres o de bytes no válida producirá una excepción ArgumentException. Sin la detección de errores, no se producirá excepción alguna y, por lo general, se omitirá la secuencia no válida.

UnicodeEncoding corresponde a las páginas de códigos 1200 (orden de bytes little-endian) y 1201 (orden de bytes big-endian) de Windows.

En el ejemplo siguiente se muestra la forma de codificar la cadena de caracteres Unicode en una matriz de bytes mediante UnicodeEncoding. La matriz de bytes se vuelve a descodificar y se convierte en cadena para mostrar que no se pierden datos.

Visual Basic
Imports System
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
C#
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);
    }
}
C++
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   
   // The encoding.
   UnicodeEncoding^ unicode = gcnew UnicodeEncoding;
   
   // Create a String* that contains Unicode characters.
   String^ unicodeString = L"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*.
   array<Byte>^encodedBytes = unicode->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 = unicode->GetString( encodedBytes );
   Console::WriteLine();
   Console::WriteLine( "Decoded bytes:" );
   Console::WriteLine( decodedString );
}
J#
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
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0

XNA Framework

Compatible con: 1.0
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker