Este articulo describe la forma en la que se puede utilizar cualquier codificación de caracteres con la clase System.Text.Encoding sin estar limitados a los métodos estándar que ofrece [UTF-7, UTF-8, UTF-16 (Unicode), UTF-32, ASCII, BigEndianUnicode]
Para especificar la codificación de caracteres usaremos la clase [System.Text.Encoding] cuya referencia MSDN es la siguiente:
Ejemplo:
'----------------------------------------------------- ' El memory stream donde escribo Dim MS As System.IO.MemoryStream = Nothing MS = New System.IO.MemoryStream(1024) '----------------------------------------------------- ' la secuencia XmlTextWriter para componer el documento Dim objXmlTextWriter As Xml.XmlTextWriter Dim CODIFICACION As System.Text.Encoding = System.Text.Encoding.UTF8 objXmlTextWriter = New Xml.XmlTextWriter(MS, Codificacion)
El problemilla aparece cuando queremos usar alguna otra codificación que no son las estándar que muestra la clase es decir alguna codificación diferente a [UTF-7, UTF-8, UTF-16 (Unicode), UTF-32, ASCII, BigEndianUnicode]
Para ello primero hay que comprender el concepto de código de pagina que no es otra cosa que un numero único que identifica perfectamente a la codificación deseada, además cada codificación tiene también un nombre único que al igual que el código podemos emplearlo para referirnos a la codificación
Código | Nombre | Descripción |
1252 | Windows-1252 | Europeo occidental (Windows) |
28591 | iso-8859-1 | Europa occidental (ISO) |
65000 | utf-7 | utf-7 |
65001 | utf-8 | utf-8 |
65005 | utf-32 | utf-32 |
Puedes ver las codificaciones del sistema en la pagina MSDN
También puedes ver el código a emplear para obtener un listado con las codificaciones del sistema en:
Ahora sabemos que usando el método [Encoding.GetEncoding (código de pagina)] podemos generar el objeto [System.Text.Encoding] que corresponde a ese código de pagina, por lo que tenemos el problema resuelto. Ahora podemos crear un objeto [System.Text.Encoding] a partir de un código de pagina (o de su nombre)
Para mas información puedes mirar la siguiente dirección que es de donde he copiado y adaptado el código final de este ejemplo.
'--------------------------------------------------------------- 'Encoding.GetEncodings (Método) 'Devuelve una matriz que contiene todas las codificaciones. 'http://msdn.microsoft.com/es-es/library/system.text.encoding.getencodings.aspx '--------------------------------------------------------------- 'Dim pageCode As Integer = 28591 ' ISO-8859-1 (europa occidental) Dim pageCode As Integer = 1250 ' Windows-1250 '---------------------------------------------------------------- 'http://msdn.microsoft.com/es-es/library/ms149359.aspx ' Create an encoding, which is equivalent to calling the ' ASCIIEncoding class constructor. ' The EncoderReplacementFallback parameter specifies that the ' string, "(unknown)", replace characters that cannot be encoded. ' A decoder replacement fallback is also specified, but in this ' code example the decoding operation cannot fail. Dim erf As New System.Text.EncoderReplacementFallback("(unknown)") Dim drf As New System.Text.DecoderReplacementFallback("(error)") ' Dim ae As System.Text.Encoding = System.Text.Encoding.GetEncoding("us-ascii", erf, drf) Dim ae As System.Text.Encoding = System.Text.Encoding.GetEncoding(pageCode, erf, drf) '---------------------------------------
© 1997 - - La Güeb de Joaquín | |||||
Joaquin Medina Serrano
|
|||||
|