Una de codificación de caracteres


([N4] gontorre) #1

Buenas tardes

Me estoy conectando a una url a través de XMLHttpRequest para descargar un texto CSV. Recojo el contenido de ResponseText en una variable y parseo el texto en Velneo.

Me encuentro con un problema con la codificación de caracteres. Todos los acentos, eñes, etc. no me aparecen. He probado a utilizar StringtoAscii() probando diferentes codecs pero no doy con ello.

¿Alguna idea?

Gracias y un saludo


([N3] pacosatu) #2

Hola Gonzalo.

Por diseño de Velneo, el contenido de ResponseText viene siempre codificado en UTF-8.
Por lo tanto, si el texto CSV viene codificado en otro CODEC (seguramente en Latin1/ISO-8859-1), de ahí viene el lío.

Tienes que obtener el CSV tal como se descarga en la clase XMLHttpRequest y hacer tú la conversión adecuada.

  • xhr.responseType = “arraybuffer” --> obtenemos el CSV como un objeto ArrayBuffer de Velneo
  • … Una vez ejecutada la consulta obtenemos el CSV en la propiedad xhr.response que es un ArrayBuffer
  • var cResponse = xhr.response.toLatin1String() --> Obtenemos el texto CSV codificado como Latin1

Pruébalo
Saludos
Paco Satué


([N4] gontorre) #3

¡Funcionando!

Mil gracias, Paco.

Un saludo