Guías

¿El CSV muestra caracteres rotos como ñ o ? en lugar de ñ? Causa y solución

Exportas una lista de clientes, la abres en otro sitio y nombres como Muñoz aparecen como Muñoz o Mu?oz. Los datos no están dañados. El programa simplemente leyó los bytes con una codificación de caracteres distinta de la que se usó al escribirlos.

Actualizado:

La causa: dos codificaciones para las mismas letras

Un archivo CSV es texto plano sin ninguna indicación de cómo están codificados sus caracteres. Hoy la mayoría de programas escriben UTF-8, donde letras como ñ, á o ü ocupan dos bytes. Los programas antiguos de Windows y muchas versiones de Excel usan Windows-1252, donde esas mismas letras ocupan un byte.

Cuando UTF-8 se lee como Windows-1252, cada carácter especial se convierte en dos símbolos extraños, por ejemplo ñ en lugar de ñ. Cuando Windows-1252 se lee como UTF-8, ese único byte no es válido y suele aparecer como un signo de interrogación o un símbolo de sustitución.

Situaciones típicas

Una tienda online, un CRM o un formulario web exporta UTF-8, y al hacer doble clic el archivo se abre en Excel con las tildes rotas. Ocurre porque muchas versiones de Excel solo reconocen UTF-8 cuando el archivo empieza con una marca invisible llamada marca de orden de bytes.

También pasa lo contrario: una lista guardada desde Excel como CSV clásico se importa en una herramienta de newsletters o en un script y muestra signos de interrogación, porque ese programa espera UTF-8.

Un problema relacionado es el separador. Excel en países que usan la coma como separador decimal, como España, espera punto y coma entre columnas, así que un archivo separado por comas puede acabar entero en una sola columna.

Abrir correctamente un archivo UTF-8 en Excel

En lugar de hacer doble clic, importa el archivo. Así Excel pregunta por la codificación y el separador en vez de adivinarlos.

  1. Abre un libro en blanco en Excel.
  2. Elige Datos, luego Desde el texto/CSV, y selecciona el archivo.
  3. Pon Origen del archivo en 65001: Unicode (UTF-8) y revisa la vista previa.
  4. Elige el delimitador correcto si las columnas aún no están separadas y carga los datos.
  5. Al guardar, usa CSV UTF-8 para que el siguiente programa lea bien el archivo.

Convertir un CSV antiguo de Excel a UTF-8

Si un archivo de Excel muestra signos de interrogación en otro programa, conviértelo una vez. El conversor de datos prueba primero con UTF-8 y recurre a Windows-1252 cuando los bytes no son UTF-8 válido, así que las tildes se leen bien. Después escribe UTF-8 limpio como CSV, JSON u otro formato, y detecta por sí mismo el punto y coma, la coma y el tabulador como separadores.

Convertir el mismo archivo varias veces en la dirección equivocada puede estropear el texto para siempre, por ejemplo cuando Muñoz se vuelve a guardar como UTF-8. Parte siempre de la exportación original.

Comprueba que no ha cambiado nada

Después de una conversión conviene confirmar que solo ha cambiado la codificación y no el contenido. Compara los dos archivos CSV por una columna clave, como el número de cliente: la herramienta muestra las celdas cambiadas, las filas nuevas y las que faltan, así que una importación fallida salta a la vista antes de usar la lista.

Hazlo ahora

Más guías