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:
Encoding (Clase)
Representa una codificación de carácter.

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

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

Codificar es el proceso de transformar un conjunto de caracteres Unicode en una secuencia de bytes. Por contraste, decodificar es el proceso de transformar una secuencia de bytes codificados en un conjunto de caracteres Unicode. Recuerde que esta clase es para operar sobre caracteres Unicode en lugar de datos binarios arbitrarios, tales como las matrices de bytes. Si la aplicación debe codificar datos binarios arbitrarios en el texto, utilice un protocolo, como UUencode, que métodos tales como System.Convert.ToBase64CharArray lo implementan.

El estándar Unicode asigna un número de punto de código a cada carácter en todas las secuencias de comandos compatibles. Un formato de transformación Unicode (UTF) es un método para codificar el 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.

Nota de precauciónPrecaución:

Aunque se admiten numerosas codificaciones no Unicode para obtener compatibilidad con las aplicaciones heredadas, se recomiendan las codificaciones Unicode (UTF8Encoding, UnicodeEncoding y UTF32Encoding) cuando hay una opción. A efectos de seguridad, cuando utilice las aplicaciones de codificaciones debería considerar habilitar la detección de errores o proporcionar valores de encoderFallback y decoderFallback explícitos ofrecidos por métodos como GetEncoding. El comportamiento predeterminado es una acción de reserva de "ajuste perfecto" que puede provocar una pérdida de información inesperada, como la pérdida de marcas diacríticas. El uso de la acción de reserva de ajuste perfecto también puede llevar a puntos débiles inesperados en seguridad de suplantación.

.NET Framework proporciona las implementaciones siguientes de la clase Encoding para que exista compatibilidad con las codificaciones Unicode actuales y de otro tipo:

  • ASCIIEncoding codifica caracteres Unicode como caracteres ASCII sencillos de 7 bits. Esta codificación sólo admite valores de caracteres entre U+0000 y U+007F. Página de códigos 20127. También disponible mediante la propiedad ASCII.

  • La clase UTF7Encoding codifica los caracteres Unicode mediante la codificación UTF-7. Esta codificación acepta todos los valores de caracteres Unicode. Página de códigos 65000. También disponible mediante la propiedad UTF7.

  • La clase UTF8Encoding codifica los caracteres Unicode mediante la codificación UTF-8. Esta codificación acepta todos los valores de caracteres Unicode. Página de códigos 65001. También disponible mediante la propiedad UTF8.

  • La clase UnicodeEncoding codifica los caracteres Unicode mediante la codificación UTF-16. Se admiten tanto el orden de bytes little-endian (página de códigos 1200) como el big-endian (página de códigos 1201). También disponible mediante las propiedades Unicode y BigEndianUnicode.

  • La clase UTF32Encoding codifica los caracteres Unicode mediante la codificación UTF-32. Se admiten tanto el orden de bytes little-endian (página de códigos 65005) como el big-endian (página de códigos 65006). También disponible mediante la propiedad UTF32.

Las aplicaciones utilizan el método GetEncoding para obtener otras codificaciones. Utilizarían el método GetEncodings para obtener una lista de todas las codificaciones.

En la tabla siguiente se ofrece una lista de las codificaciones compatibles y sus páginas de códigos asociadas. Un asterisco en la última columna indica que .NET Framework admite de forma nativa la página de códigos, con independencia de la plataforma subyacente.

Página de códigos

Nombre

Nombre mostrado

37

IBM037

IBM EBCDIC (EE.UU.-Canadá)

437

IBM437

Estados Unidos OEM

500

IBM500

IBM EBCDIC (Internacional)

708

ASMO-708

Árabe (ASMO 708)

720

DOS-720

Árabe (DOS)

737

ibm737

Griego (DOS)

775

ibm775

Báltico (DOS)

850

ibm850

Europa occidental (DOS)

852

ibm852

Centroeuropeo (DOS)

855

IBM855

Cirílico OEM

857

ibm857

Turco (DOS)

858

IBM00858

Latín multilingüe OEM I

860

IBM860

Portugués (DOS)

861

ibm861

Islandés (DOS)

862

DOS-862

Hebreo (DOS)

863

IBM863

Francés canadiense (DOS)

864

IBM864

Árabe (864)

865

IBM865

Nórdico (DOS)

866

cp866

Cirílico (DOS)

869

ibm869

Griego moderno (DOS)

870

IBM870

IBM EBCDIC (Latín multilingüe-2)

874

windows-874

Tailandés (Windows)

875

cp875

IBM EBCDIC (Griego moderno)

932

shift_jis

Japonés (Shift-JIS)

936

gb2312

Chino simplificado (GB2312)

*

949

ks_c_5601-1987

Coreano

950

big5

Chino tradicional (Big5)

1026

IBM1026

IBM EBCDIC (Turco Latín-5)

1047

IBM01047

IBM Latín-1

1140

IBM01140

IBM EBCDIC (EE.UU.-Canadá-Euro)

1141

IBM01141

IBM EBCDIC (Alemania-Euro)

1142

IBM01142

IBM EBCDIC (Dinamarca-Noruega-Euro)

1143

IBM01143

IBM EBCDIC (Finlandia-Suecia-Euro)

1144

IBM01144

IBM EBCDIC (Italia-Euro)

1145

IBM01145

IBM EBCDIC (España-Euro)

1146

IBM01146

IBM EBCDIC (Reino Unido-Euro)

1147

IBM01147

IBM EBCDIC (Francia-Euro)

1148

IBM01148

IBM EBCDIC (Internacional-Euro)

1149

IBM01149

IBM EBCDIC (Islandés-Euro)

1200

utf-16

Unicode

*

1201

unicodeFFFE

Unicode (big-endian)

*

1250

windows-1250

Centroeuropeo (Windows)

1251

windows-1251

Cirílico (Windows)

1252

Windows -1252

Europeo occidental (Windows)

*

1253

windows-1253

Griego (Windows)

1254

windows-1254

Turco (Windows)

1255

windows-1255

Hebreo (Windows)

1256

windows-1256

Árabe (Windows)

1257

windows-1257

Báltico (Windows)

1258

windows-1258

Vietnamita (Windows)

1361

Johab

Coreano (Johab)

10000

macintosh

Europa occidental (Mac)

10001

x-mac-japanese

Japonés (Mac)

10002

x-mac-chinesetrad

Chino tradicional (Mac)

10003

x-mac-korean

Coreano (Mac)

*

10004

x-mac-arabic

Árabe (Mac)

10005

x-mac-hebrew

Hebreo (Mac)

10006

x-mac-greek

Griego (Mac)

10007

x-mac-cyrillic

Cirílico (Mac)

10008

x-mac-chinesesimp

Chino simplificado (Mac)

*

10010

x-mac-romanian

Rumano (Mac)

10017

x-mac-ukrainian

Ucraniano (Mac)

10021

x-mac-thai

Tailandés (Mac)

10029

x-mac-ce

Centroeuropeo (Mac)

10079

x-mac-icelandic

Islandés (Mac)

10081

x-mac-turkish

Turco (Mac)

10082

x-mac-croatian

Croata (Mac)

12000

utf-32

Unicode (UTF-32)

*

12001

utf-32BE

Unicode (UTF-32 big-endian)

*

20000

x-Chinese-CNS

Chino tradicional (CNS)

20001

x-cp20001

TCA Taiwán

20002

x-Chinese-Eten

Chino tradicional (Eten)

20003

x-cp20003

IBM5550 Taiwán

20004

x-cp20004

TeleText Taiwán

20005

x-cp20005

Wang Taiwán

20105

x-IA5

Europa occidental (IA5)

20106

x-IA5-German

Alemán (IA5)

20107

x-IA5-Swedish

Sueco (IA5)

20108

x-IA5-Norwegian

Noruego (IA5)

20127

us-ascii

EE.UU.-ASCII

*

20261

x-cp20261

T.61

20269

x-cp20269

ISO -6937

20273

IBM273

IBM EBCDIC (Alemania)

20277

IBM277

IBM EBCDIC (Dinamarca-Noruega)

20278

IBM278

IBM EBCDIC (Finlandia-Suecia)

20280

IBM280

IBM EBCDIC (Italia)

20284

IBM284

IBM EBCDIC (España)

20285

IBM285

IBM EBCDIC (Reino Unido)

20290

IBM290

IBM EBCDIC (Katakana japonés)

20297

IBM297

IBM EBCDIC (Francia)

20420

IBM420

IBM EBCDIC (Árabe)

20423

IBM423

IBM EBCDIC (Griego)

20424

IBM424

IBM EBCDIC (Hebreo)

20833

x-EBCDIC-KoreanExtended

IBM EBCDIC (Coreano extendido)

20838

IBM-Thai

IBM EBCDIC (Tai)

20866

koi8-r

Cirílico (KOI8-R)

20871

IBM871

IBM EBCDIC (Islandés)

20880

IBM880

IBM EBCDIC (Ruso cirílico)

20905

IBM905

IBM EBCDIC (Turco)

20924

IBM00924

IBM Latín-1

20932

EUC-JP

Japonés (JIS 0208-1990 y 0212-1990)

20936

x-cp20936

Chino simplificado (GB2312-80)

*

20949

x-cp20949

Coreano Wansung

*

21025

cp1025

IBM EBCDIC (Cirílico serbio-búlgaro)

21866

koi8-u

Cirílico (KOI8-U)

28591

iso-8859-1

Europa occidental (ISO)

*

28592

iso-8859-2

Centroeuropeo (ISO)

28593

iso-8859-3

Latín 3 (ISO)

28594

iso-8859-4

Báltico (ISO)

28595

iso-8859-5

Cirílico (ISO)

28596

iso-8859-6

Árabe (ISO)

28597

iso-8859-7

Griego (ISO)

28598

iso-8859-8

Hebreo (ISO-Visual)

*

28599

iso-8859-9

Turco (ISO)

28603

iso-8859-13

Estonio (ISO)

28605

iso-8859-15

Latín 9 (ISO)

29001

x-Europa

Europa

38598

iso-8859-8-i

Hebreo (ISO-Lógico)

*

50220

iso-2022-jp

Japonés (JIS)

*

50221

csISO2022JP

Japonés (JIS-Permitir 1 byte Kana)

*

50222

iso-2022-jp

Japonés (JIS-Permitir 1 byte Kana - SO/SI)

*

50225

iso-2022-kr

Coreano (ISO)

*

50227

x-cp50227

Chino simplificado (ISO-2022)

*

51932

euc-jp

Japonés (EUC)

*

51936

EUC-CN

Chino simplificado (EUC)

*

51949

euc-kr

Coreano (EUC)

*

52936

hz-gb-2312

Chino simplificado (HZ)

*

54936

GB18030

Chino simplificado (GB18030)

*

57002

x-iscii-de

ISCII Devanagari

*

57003

x-iscii-be

ISCII Bengalí

*

57004

x-iscii-ta

ISCII Tamil

*

57005

x-iscii-te

ISCII Telugu

*

57006

x-iscii-as

ISCII Asamés

*

57007

x-iscii-or

ISCII Oriya

*

57008

x-iscii-ka

ISCII Kannada

*

57009

x-iscii-ma

ISCII Malayalam

*

57010

x-iscii-gu

ISCII Gujarati

*

57011

x-iscii-pa

ISCII Punjabí

*

65000

utf-7

Unicode (UTF-7)

*

65001

utf-8

Unicode (UTF-8)

*

El método GetByteCount determina el número de bytes resultante 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 de descodificar una secuencia de bytes, y el método GetChars realiza la descodificación real.

Si los datos que se van a convertir sólo están disponibles en bloques secuenciales (como los datos leídos de una secuencia) o si la cantidad de datos es tan grande que es necesario dividirlos en bloques más pequeños, utilice las clases Decoder o Encoder proporcionadas por el método GetDecoder o el método GetEncoder, respectivamente, de una clase derivada.

Los codificadores UTF-16 y UTF-32 pueden 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 (U+0041) se serializa del siguiente modo (en hexadecimal):

  • El orden de bytes big endian de UTF-16: 00 41

  • El orden de bytes little endian de UTF-16: 41 00

  • El orden de bytes big endian de UTF-32: 00 00 00 41

  • El orden de bytes little endian de UTF-32: 41 00 00 00

Opcionalmente, la clase Encoding 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 (en Unicode, el 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):

  • UTF-8: EF BB BF

  • El orden de bytes big endian de UTF-16: FE FF

  • El orden de bytes little endian de UTF-16: FF FE

  • El orden de bytes big endian de UTF-32: 00 00 FE FF

  • El orden de bytes little endian de UTF-32: FF FE 00 00

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 puede contener la marca de orden de bytes. Si esta matriz se antepone a una secuencia codificada, ayuda al descodificador a identificar el formato de codificación utilizado.

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

En el ejemplo de código siguiente se convierte una cadena de una codificación a otra.

Visual Basic
Imports System
Imports System.Text
Imports Microsoft.VisualBasic

Namespace Convert_Example
    Class MyConvertExampleClass
        Shared Sub Main()
            Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")"

            ' Create two different encodings.
            Dim ascii As Encoding = Encoding.ASCII
            Dim [unicode] As Encoding = Encoding.Unicode

            ' Convert the string into a byte[].
            Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString)

            ' Perform the conversion from one encoding to the other.
            Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)

            ' Convert the new byte[] into a char[] and then into a string.
            ' This is a slightly different approach to converting to illustrate
            ' the use of GetCharCount/GetChars.
            Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char
            ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
            Dim asciiString As New String(asciiChars)

            ' Display the strings created before and after the conversion.
            Console.WriteLine("Original string: {0}", unicodeString)
            Console.WriteLine("Ascii converted string: {0}", asciiString)
        End Sub
    End Class
End Namespace
C#
using System;
using System.Text;

namespace ConvertExample
{
   class ConvertExampleClass
   {
      static void Main()
      {
         string unicodeString = "This string contains the unicode character Pi(\u03a0)";

         // Create two different encodings.
         Encoding ascii = Encoding.ASCII;
         Encoding unicode = Encoding.Unicode;

         // Convert the string into a byte[].
         byte[] unicodeBytes = unicode.GetBytes(unicodeString);

         // Perform the conversion from one encoding to the other.
         byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
            
         // Convert the new byte[] into a char[] and then into a string.
         // This is a slightly different approach to converting to illustrate
         // the use of GetCharCount/GetChars.
         char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
         ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
         string asciiString = new string(asciiChars);

         // Display the strings created before and after the conversion.
         Console.WriteLine("Original string: {0}", unicodeString);
         Console.WriteLine("Ascii converted string: {0}", asciiString);
      }
   }
}
C++
using namespace System;
using namespace System::Text;
int main()
{
   String^ unicodeString = "This string contains the unicode character Pi(\u03a0)";
   
   // Create two different encodings.
   Encoding^ ascii = Encoding::ASCII;
   Encoding^ unicode = Encoding::Unicode;
   
   // Convert the string into a Byte->Item[].
   array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString );
   
   // Perform the conversion from one encoding to the other.
   array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes );
   
   // Convert the new Byte into[] a char and[] then into a string.
   // This is a slightly different approach to converting to illustrate
   // the use of GetCharCount/GetChars.
   array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length ));
   ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
   String^ asciiString = gcnew String( asciiChars );
   
   // Display the strings created before and after the conversion.
   Console::WriteLine( "Original String*: {0}", unicodeString );
   Console::WriteLine( "Ascii converted String*: {0}", asciiString );
}
J#
package ConvertExample; 

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

class ConvertExampleClass
{
    public static void main(String[] args)
    {
        String unicodeString = 
                "This string contains the unicode character Pi(\u03a0)";

        // Create two different encodings.
        Encoding ascii = Encoding.get_ASCII();
        Encoding unicode = Encoding.get_Unicode();

        // Convert the string into a byte[].
        ubyte unicodeBytes[] = unicode.GetBytes(unicodeString);

        // Perform the conversion from one encoding to the other.
        ubyte asciiBytes[] = Encoding.Convert(unicode, ascii, unicodeBytes);

        // Convert the new byte[] into a char[] and then into a string.
        // This is a slightly different approach to converting to illustrate
        // the use of GetCharCount/GetChars.
        char asciiChars[] = new 
                char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.length)];
        ascii.GetChars(asciiBytes, 0, asciiBytes.length, asciiChars, 0);
        String asciiString = new String(asciiChars);

        // Display the strings created before and after the conversion.
        Console.WriteLine("Original string: {0}", unicodeString);
        Console.WriteLine("Ascii converted string: {0}", asciiString);
    } //main
} //ConvertExampleClass 
System.Object
  System.Text.Encoding
     Clases derivadas
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