Discussion:
ReadXML caracter invalido Ñ
(demasiado antiguo para responder)
Jaime Infante
2006-10-06 22:29:45 UTC
Permalink
Tengo un conjunto de datos, pero al leer un archivo XML me dice que contiene
caracteres invalidos, en este caso es la "Ñ" como puedo omitir este mensje
y que me deje poder leer esos caracteres.

Gracias
Alberto Poblacion [MVP]
2006-10-07 07:59:35 UTC
Permalink
Post by Jaime Infante
Tengo un conjunto de datos, pero al leer un archivo XML me dice que contiene
caracteres invalidos, en este caso es la "Ñ" como puedo omitir este mensje
y que me deje poder leer esos caracteres.
Hay que mirar en dos sitios, dependiendo de cómo proceses el archivo:
Uno es en el propio archivo XML, en la cabecera hay que indicar el juego de
caracteres utilizado, para que se pueda interpretar la Ñ:
<?xml version="1.0" encoding="utf-8" ?>

En el ejemplo anterior, la codificación sería UTF-8, y por tanto las
eñes que haya dentro de ese archivo tienes que grabarlas con el código que
les corresponda en utf-8. Si quieres usar el juego de caracteres de Windows,
cambia la cabecera a esta:
<?xml version="1.0" encoding="windows-1252" ?>

Una vez hecho lo anterior, las funciones de manipulación de XML de .Net
deben entender las eñes. Por ejemplo, si usas un Load() de XmlDocument para
leer el archivo, con esto basta.

Sin embargo, si no estás usando funciones de XML, sino que estás
abriendo el archivo por tu cuenta para tratarlo como si fuera un texto (por
ejemplo, con un StreamReader), entonces tienes que indicarle el juego de
caracteres al abrir el archivo:

Dim sr as New
StreamReader("miarchivo.xml",System.Text.Encoding.GetEncoding(1252))
string contenido=sr.ReadToEnd();
sr.Close()

Obviamente, si en lugar del juego de Windows has usado otro (típicamente
UTF8 para los archivos XML), tendrás que ponerlo debidamente en el
GetEncoding.
SoftJaén
2006-10-07 11:59:27 UTC
Permalink
"Alberto Poblacion [MVP]"
Hola, Alberto:

Disculpa el mensaje, pero la "etiqueta" de MVP, creo que bien merece, aunque
sea una pequeña celebración. :-)

Quiero darte mi más sincera enhorabuena por tu nombramiento como MVP de
Microsoft.

¡Felicidades!

Un saludo
--
Enrique Martínez
[MS MVP - VB]
Alberto Poblacion [MVP]
2006-10-07 12:14:28 UTC
Permalink
Post by SoftJaén
"Alberto Poblacion [MVP]"
Disculpa el mensaje, pero la "etiqueta" de MVP, creo que bien merece, aunque
sea una pequeña celebración. :-)
Quiero darte mi más sincera enhorabuena por tu nombramiento como MVP de
Microsoft.
Muchas gracias. Aunque el nombramiento se refiere a la categoría "Visual
Developer - C#", ocasionalmente me verás también colaborar en este grupo de
VB.
SoftJaén
2006-10-07 13:56:43 UTC
Permalink
Post by Alberto Poblacion [MVP]
Muchas gracias. Aunque el nombramiento se refiere a la categoría "Visual
Developer - C#", ocasionalmente me verás también colaborar en este
grupo de VB.
Me enteré el pasado jueves. Digamos que un "pajarillo" me lo había dicho.
:-)

Pues si tus colaboraciones en este grupo son "ocasionales", no me quiero
imaginar lo que supondrá colaborar al 100 por 100 en el grupo de noticias de
C#. Desde luego, los usuarios de dicho grupo pueden estar de enhorabuena.
:-)
--
Enrique Martínez
[MS MVP - VB]
Jaime Infante
2006-10-09 15:21:41 UTC
Permalink
Gracias por la ayuda
Post by SoftJaén
Post by Alberto Poblacion [MVP]
Muchas gracias. Aunque el nombramiento se refiere a la categoría "Visual
Developer - C#", ocasionalmente me verás también colaborar en este
grupo de VB.
Me enteré el pasado jueves. Digamos que un "pajarillo" me lo había dicho.
:-)
Pues si tus colaboraciones en este grupo son "ocasionales", no me quiero
imaginar lo que supondrá colaborar al 100 por 100 en el grupo de noticias
de C#. Desde luego, los usuarios de dicho grupo pueden estar de
enhorabuena. :-)
--
Enrique Martínez
[MS MVP - VB]
Jaime Infante
2006-10-09 15:39:56 UTC
Permalink
Gracias por tu ayuda Alberto
Revise el archivo XML y no tiene especificado el juego de caracteres
Probe con UTF-8 y no me funciono, pero con el windows-1252 ya no me dio
errores

Ahora la pregunta es como podria yo agregarle a estos archivos el juego de
caracteres
Post by Alberto Poblacion [MVP]
Post by Jaime Infante
Tengo un conjunto de datos, pero al leer un archivo XML me dice que contiene
caracteres invalidos, en este caso es la "Ñ" como puedo omitir este mensje
y que me deje poder leer esos caracteres.
Uno es en el propio archivo XML, en la cabecera hay que indicar el juego
<?xml version="1.0" encoding="utf-8" ?>
En el ejemplo anterior, la codificación sería UTF-8, y por tanto las
eñes que haya dentro de ese archivo tienes que grabarlas con el código que
les corresponda en utf-8. Si quieres usar el juego de caracteres de
<?xml version="1.0" encoding="windows-1252" ?>
Una vez hecho lo anterior, las funciones de manipulación de XML de .Net
deben entender las eñes. Por ejemplo, si usas un Load() de XmlDocument
para leer el archivo, con esto basta.
Sin embargo, si no estás usando funciones de XML, sino que estás
abriendo el archivo por tu cuenta para tratarlo como si fuera un texto
(por ejemplo, con un StreamReader), entonces tienes que indicarle el juego
Dim sr as New
StreamReader("miarchivo.xml",System.Text.Encoding.GetEncoding(1252))
string contenido=sr.ReadToEnd();
sr.Close()
Obviamente, si en lugar del juego de Windows has usado otro
(típicamente UTF8 para los archivos XML), tendrás que ponerlo debidamente
en el GetEncoding.
Alberto Poblacion [MVP]
2006-10-09 19:39:09 UTC
Permalink
Post by Jaime Infante
Revise el archivo XML y no tiene especificado el juego de caracteres
Probe con UTF-8 y no me funciono, pero con el windows-1252 ya no me dio
errores
Ahora la pregunta es como podria yo agregarle a estos archivos el juego de
caracteres
¿Te refieres a añadirles el "encoding" en la cabecera? Creo que con el
DOM se puede, pero yo no me molestaría. Es más sencillo abrirlos en modo
texto con un StreamReader, leerlos a un string, insertar la cabecera deseada
en el string, y volver a grabarlo con un StreamWriter.
Jaime Infante
2006-10-09 21:35:13 UTC
Permalink
Gracias
Post by Alberto Poblacion [MVP]
Post by Jaime Infante
Revise el archivo XML y no tiene especificado el juego de caracteres
Probe con UTF-8 y no me funciono, pero con el windows-1252 ya no me dio
errores
Ahora la pregunta es como podria yo agregarle a estos archivos el juego
de caracteres
¿Te refieres a añadirles el "encoding" en la cabecera? Creo que con el
DOM se puede, pero yo no me molestaría. Es más sencillo abrirlos en modo
texto con un StreamReader, leerlos a un string, insertar la cabecera
deseada en el string, y volver a grabarlo con un StreamWriter.
Loading...