se pierde la ñ

23/11/2006 - 19:05 por Juan de la Torre | Informe spam
hola amigos necesito de vuestra sabiduria.

Estoy leyendo unos de datos de un archivo que esta en modo texto y cuando se
encuentra la "ñ" o "´" por ejemplo se las salta y la cadena que obtengo la
falta la ñ y ´ ,lo hago de la siguiente manera:

Dim Codigo() As Char = br.ReadChars(5)

Supongo que el char no es capaz de leer esos caracteres. Como lo Hago?

gracias por vuestro tiempo

Preguntas similare

Leer las respuestas

#1 Toni Recio
23/11/2006 - 20:29 | Informe spam
Has verificado la configuración regional y de teclado del Windows dónde está
corriendo la aplicación?

"Juan de la Torre" wrote:

hola amigos necesito de vuestra sabiduria.

Estoy leyendo unos de datos de un archivo que esta en modo texto y cuando se
encuentra la "ñ" o "´" por ejemplo se las salta y la cadena que obtengo la
falta la ñ y ´ ,lo hago de la siguiente manera:

Dim Codigo() As Char = br.ReadChars(5)

Supongo que el char no es capaz de leer esos caracteres. Como lo Hago?

gracias por vuestro tiempo
Respuesta Responder a este mensaje
#2 Alberto Poblacion
23/11/2006 - 20:45 | Informe spam
"Juan de la Torre" wrote in
message news:
Estoy leyendo unos de datos de un archivo que esta en modo texto y cuando
se
encuentra la "ñ" o "´" por ejemplo se las salta y la cadena que obtengo la
falta la ñ y ´ ,lo hago de la siguiente manera:

Dim Codigo() As Char = br.ReadChars(5)

Supongo que el char no es capaz de leer esos caracteres. Como lo Hago?



No, no es eso. El char es Unicode (16 bits) y soporta todos los
caracteres. Pero el archivo que estás leyendo probablemente estará
codificado con algún tipo de juego de caracteres de 8 bits, y los distintos
tipos de codificación usan un código diferente para la "ñ". Si no le
explicas a .Net qué juego de caracteres estás leyendo, no sabe a cuál de los
valores binarios le corresponde la ñ.

Lo de br.ReadChars sugiere que estás usando un BinaryReader. En este
caso, que yo sepa, la conversión del juego de caracteres la tienes que hacer
tú mismo (usando Encoding.GetChars()), ya que el BinaryReader no la hace.
Sería más fácil si usaras un StreamReader, que permite especificar el juego
de caracteres en el momento de hacer la apertura del fichero:

Dim sr as New StreamReader("fichero.txt",
System.Text.Encoding.GetEncoding(1252))
sr.Read(Codigo, 0, 5)
...
sr.Close()

El GetEncoding(1252) te da el juego de caracteres "normal" de un Windows
en Español. Por supuesto, tendrás que cambiarlo por la codificación correcta
de tu archivo, por ejemplo, si está grabado con UTF8 tendrás que poner
System.Text.Encoding.UTF8.
Respuesta Responder a este mensaje
#3 Juan de la Torre
24/11/2006 - 10:34 | Informe spam
Ok hasta aqui todo perfecto, pero ahora me encuentro con que la fecha viene
separada en archivo de texto de esta forma: DD MM AAAA. como podria
juntar los tres datos y passarselos a un datetime de la siguiente forma:
DD/MM/AAA. He probado varias formas pero todas me dan error.

gracias de nuevo

"Alberto Poblacion" wrote:

"Juan de la Torre" wrote in
message news:
> Estoy leyendo unos de datos de un archivo que esta en modo texto y cuando
> se
> encuentra la "ñ" o "´" por ejemplo se las salta y la cadena que obtengo la
> falta la ñ y ´ ,lo hago de la siguiente manera:
>
> Dim Codigo() As Char = br.ReadChars(5)
>
> Supongo que el char no es capaz de leer esos caracteres. Como lo Hago?

No, no es eso. El char es Unicode (16 bits) y soporta todos los
caracteres. Pero el archivo que estás leyendo probablemente estará
codificado con algún tipo de juego de caracteres de 8 bits, y los distintos
tipos de codificación usan un código diferente para la "ñ". Si no le
explicas a .Net qué juego de caracteres estás leyendo, no sabe a cuál de los
valores binarios le corresponde la ñ.

Lo de br.ReadChars sugiere que estás usando un BinaryReader. En este
caso, que yo sepa, la conversión del juego de caracteres la tienes que hacer
tú mismo (usando Encoding.GetChars()), ya que el BinaryReader no la hace.
Sería más fácil si usaras un StreamReader, que permite especificar el juego
de caracteres en el momento de hacer la apertura del fichero:

Dim sr as New StreamReader("fichero.txt",
System.Text.Encoding.GetEncoding(1252))
sr.Read(Codigo, 0, 5)
...
sr.Close()

El GetEncoding(1252) te da el juego de caracteres "normal" de un Windows
en Español. Por supuesto, tendrás que cambiarlo por la codificación correcta
de tu archivo, por ejemplo, si está grabado con UTF8 tendrás que poner
System.Text.Encoding.UTF8.



Respuesta Responder a este mensaje
#4 Alberto Poblacion
24/11/2006 - 10:53 | Informe spam
"Juan de la Torre" wrote in
message news:
Ok hasta aqui todo perfecto, pero ahora me encuentro con que la fecha
viene
separada en archivo de texto de esta forma: DD MM AAAA. como podria
juntar los tres datos y passarselos a un datetime de la siguiente forma:
DD/MM/AAA. He probado varias formas pero todas me dan error.



Pues me temo que no hay otro método más que hacerlo "a lo bestia", a
base de manipular el string. Si la lees a un string y ya la tienes asi:

Dim sFecha as String = "31 12 2006"

(nótese que hay dos espacios entre las cifras), entonces para convertirla a
un DateTime se puede hacer algo parecido a lo sigiuiente:

Dim dia as Integer = Int32.Parse(sFecha.Substring(0,2))
Dim mes as Integer = Int32.Parse(sFecha.Substring(4,2))
Dim año as Integer = Int32.Parse(sFecha.Substring(8,4))
Dim fecha as DateTime = New DateTime(año, mes, dia)
Respuesta Responder a este mensaje
#5 Juan de la Torre
24/11/2006 - 11:10 | Informe spam
No me he explicado bien:
el dia es un campo
El mes es otro
y el año otro

son tres campos separados

"Alberto Poblacion" wrote:

"Juan de la Torre" wrote in
message news:
> Ok hasta aqui todo perfecto, pero ahora me encuentro con que la fecha
> viene
> separada en archivo de texto de esta forma: DD MM AAAA. como podria
> juntar los tres datos y passarselos a un datetime de la siguiente forma:
> DD/MM/AAA. He probado varias formas pero todas me dan error.

Pues me temo que no hay otro método más que hacerlo "a lo bestia", a
base de manipular el string. Si la lees a un string y ya la tienes asi:

Dim sFecha as String = "31 12 2006"

(nótese que hay dos espacios entre las cifras), entonces para convertirla a
un DateTime se puede hacer algo parecido a lo sigiuiente:

Dim dia as Integer = Int32.Parse(sFecha.Substring(0,2))
Dim mes as Integer = Int32.Parse(sFecha.Substring(4,2))
Dim año as Integer = Int32.Parse(sFecha.Substring(8,4))
Dim fecha as DateTime = New DateTime(año, mes, dia)




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida