desarrollodatospráctico

El formato CSV: separadores, comillas y codificación

El CSV es el formato de intercambio de datos más universal y el que peor se implementa. Aquí tienes la guía completa de cómo funciona de verdad, por qué se rompe y cómo tratar bien los casos límite.

·6 min de lectura

Qué es un CSV (y qué no)

CSV (valores separados por comas) es un formato de texto plano para datos en forma de tabla. Cada línea es una fila y las columnas se separan con comas. La idea es simple; la práctica, una variación infinita.

Existe una especificación para el CSV (el RFC 4180, publicado en 2005), pero no es obligatoria y muchos programas generan archivos que se apartan de ella. Excel, Google Sheets y distintas bases de datos interpretan el formato de forma ligeramente distinta.

Las reglas básicas

  • Un registro por línea
  • Campos separados por comas
  • La primera fila suele ser (aunque no siempre) la de encabezados
  • No hay información de tipos: a nivel de formato, todo son cadenas de texto

nombre,edad,ciudad Alicia,30,Madrid Bruno,25,Buenos Aires

Comillas: cuándo hay que entrecomillar un campo

  • El carácter separador (la , en un CSV estándar)
  • Un salto de línea (CR, LF o CRLF)
  • Unas comillas dobles

nombre,biografía Alicia,"Programadora, escritora y ponente" Bruno,"Primera línea Segunda línea"

La coma de "Programadora, escritora y ponente" tiene que ir dentro de las comillas; si no, los analizadores la tomarán por un separador de columnas.

La regla de escapar las comillas dobles

Para incluir unas comillas dobles literales dentro de un campo entrecomillado, se duplican:

cita,"Me dijo ""hola"" al entrar"

Esa es la regla del RFC 4180. Algunos sistemas escapan con barra invertida (\") en su lugar, lo que crea incompatibilidades entre analizadores.

El separador no siempre es una coma

  • **CSV**: coma (,)
  • **TSV**: tabulador, habitual cuando los valores contienen comas
  • **SSV**: punto y coma (;), el que usa Excel por defecto en los sistemas donde la coma es el separador decimal (España, Alemania, Francia y buena parte de Europa)
  • **Separado por barras verticales** (|): se usa cuando los valores suelen contener comas y tabuladores

Excel con la configuración regional española exporta el CSV con puntos y coma, lo que rompe cualquier importador que espere comas. Es uno de los problemas de compatibilidad más frecuentes.

Los finales de línea

El RFC 4180 especifica CRLF (\r\n) como final de línea. En la práctica, los sistemas Linux y macOS usan LF (\n), y los programas de Windows suelen generar CRLF. Los analizadores bien escritos aceptan los dos.

Un fallo típico: un archivo con finales CRLF abierto en Linux deja un \r al final de cada valor de la última columna. El valor "Madrid" pasa a ser "Madrid\r", lo que rompe silenciosamente las comparaciones y las operaciones con cadenas.

Problemas de codificación

Los archivos CSV no declaran su codificación, así que quien los lee tiene que adivinarla, y eso falla en cuanto aparecen caracteres no ASCII.

**Marca de orden de bytes en UTF-8**: algunos programas (Excel el primero) escriben una marca al principio de los CSV en UTF-8. Ayuda a Excel a detectar la codificación, pero puede romper otros analizadores, que la toman como parte del nombre del primer campo.

**Latin-1 frente a UTF-8**: Excel ha guardado históricamente en la codificación local del sistema (Windows-1252 en los Windows occidentales) y no en UTF-8. Los caracteres acentuados (é, ü, ñ) escritos en Windows-1252 y leídos como UTF-8 salen ilegibles. Indica siempre la codificación de forma explícita cuando abras archivos CSV por código.

Valores nulos y vacíos

El CSV no tiene valor nulo. Un campo vacío (dos separadores seguidos) puede significar nulo, cadena vacía o cero, según la aplicación.

Alicia,,Madrid

El campo del medio está vacío. Que eso sea un nulo o un "" depende de cómo lo trate el importador, y las convenciones varían de un programa a otro.

Reglas prácticas para analizar CSV

  • No analices nunca un CSV a mano con split(","): fallará con los campos entrecomillados que contengan comas
  • Usa una biblioteca de análisis de CSV de tu lenguaje (el módulo csv de Python, Papa Parse en JavaScript, encoding/csv en Go)
  • Indica siempre el separador de forma explícita en vez de dar por hecho que es la coma
  • Indica siempre la codificación de forma explícita (mejor UTF-8)
  • Trata la fila de encabezados aparte: no des por hecho que existe ni que está siempre en la primera línea
  • Haz pruebas con valores que contengan comas, comillas y saltos de línea

El conversor de separadores, el recortador de columnas y el eliminador de filas duplicadas de NoxaKit se encargan de las transformaciones habituales de CSV en el navegador, sin subir nada y sin procesado en servidor.

Más artículos