Los archivos CSV explicados: separadores, comillas, codificación y Excel
Un archivo CSV es texto plano: un registro por línea, con los valores separados por comas. Casi cualquier base de datos, hoja de cálculo o servicio en línea puede exportarlo, y por eso es la forma habitual de llevar una tabla de un programa a otro. También es fácil que salga mal, porque el CSV se usaba mucho antes de que alguien lo pusiera por escrito, y los programas siguen sin ponerse de acuerdo en los detalles.
Esta parte de la serie trata las reglas del CSV, los problemas de separador y de comillas que parten los valores donde no toca, la codificación de caracteres, lo que cambian las hojas de cálculo al abrir un archivo y un riesgo que conviene tener en cuenta al exportar datos que abrirán otras personas.
Las reglas que tiene el CSV
No existe una norma oficial única. Lo más parecido es el RFC 4180, publicado en octubre de 2005, que documenta el formato que usa la mayoría de los programas y registra el tipo de medio text/csv. Es un documento informativo, no un estándar de Internet, y establece estas reglas:
- Cada registro va en su propia línea, terminada con un salto de línea (CR LF). La última línea puede terminar con uno o no.
- La primera línea puede ser una cabecera con los nombres de las columnas, con el mismo formato que las demás.
- Los valores se separan con comas, todas las líneas deberían tener el mismo número de valores y no hay coma después del último.
- Los espacios forman parte del valor: en Ana, Lisboa el segundo valor empieza por un espacio.
- Un valor que contiene una coma, unas comillas dobles o un salto de línea debería ir entre comillas dobles.
- Dentro de un valor entre comillas, las comillas dobles se escriben dos veces.
Todo lo demás varía. La Biblioteca del Congreso de Estados Unidos, que cataloga formatos de archivo para su conservación a largo plazo, enumera variantes habituales: punto y coma en lugar de comas, saltos de línea solo con LF o solo con CR, barras invertidas o comillas simples en lugar de comillas dobles y distintas formas de tratar los espacios. Un archivo puede ser un CSV válido para el programa que lo escribió y aun así leerse mal en otro.
Comas, punto y coma y tabuladores
Donde la coma es el separador decimal, como en buena parte de Europa y de Sudamérica, una coma entre valores chocaría con números como 1,20. Los archivos hechos allí suelen usar punto y coma. Excel sigue la configuración regional del ordenador: Microsoft indica que, si el separador decimal es la coma, Excel usa el punto y coma como separador de listas.
Es el motivo habitual de que un archivo se abra con todo en la primera columna: se escribió con un separador y se leyó con otro. La misma tabla, con coma decimal en el precio (la barra marca un salto de línea):
nombre;precio / Pão;1,20Separado por punto y coma: dos columnas, nombre y precio, y 1,20 sigue siendo un solo valor.nombre,precio / Pão,"1,20"Separado por comas: el precio tiene que ir entre comillas, o 1 y 20 serían dos valores.nombre;precio / Pão;1,20 leído con comasLa cabecera se convierte en una sola columna llamada nombre;precio, y la coma de 1,20 parte la fila en Pão;1 y 20.
Los archivos separados por tabuladores evitan casi todo esto, porque los tabuladores rara vez aparecen dentro de los valores. Suelen usar la extensión .tsv o .txt en lugar de .csv.
Comillas: la regla que más importa
Muchos CSV rotos se deben a un valor que necesitaba comillas y no las tenía, o a unas comillas que nunca se cerraron. Estos ejemplos siguen el RFC 4180:
"Lisboa, Portugal"Un solo valor. Sin las comillas, se partiría en dos columnas, Lisboa y Portugal."Dijo ""hola"""Se lee como Dijo "hola": dentro de las comillas, cada "" equivale a unas comillas dobles."línea uno / línea dos"Un solo valor con un salto de línea dentro (aquí, la barra). Los programas que leen el archivo línea a línea, sin mirar las comillas, lo parten en dos registros."sin cerrarUnas comillas sin pareja pueden tragarse el resto del archivo en un solo valor. Un lector cuidadoso lo indica como error.
Si escribes CSV tú mismo, pon entre comillas cualquier valor que contenga el separador, comillas dobles o un salto de línea, y duplica las comillas de dentro. También se permite poner todos los valores entre comillas, lo que evita sorpresas.
Codificación: por qué las tildes se convierten en ã
Un archivo CSV no dice nada sobre su codificación de caracteres. El RFC 4180 señala que el uso habitual es US-ASCII, que no tiene letras acentuadas, y hoy la mayoría de los archivos son UTF-8. UTF-8 guarda letras como ã, é o € en dos o tres bytes. Un programa que lee esos bytes con otra codificación, como Windows-1252, muestra cada byte como un carácter aparte:
Pão → PãoLos dos bytes de ã, leídos como Windows-1252.café → caféLo mismo le pasa a la é.€ → €El símbolo del euro ocupa tres bytes en UTF-8, así que se convierte en tres caracteres.
Microsoft explica que Excel abre bien un CSV en UTF-8 con doble clic solo si el archivo empieza con una marca de orden de bytes (BOM), tres bytes invisibles que anuncian UTF-8. Si no la tiene, Microsoft recomienda importarlo, con Datos > Desde texto o CSV. Si ves este mismo desorden en un archivo que creaste tú, se guardó con una codificación y se abrió con otra.
Lo que cambian las hojas de cálculo al abrir un CSV
Cuando Excel abre directamente un archivo .csv, adivina el tipo de cada valor con su configuración predeterminada. Microsoft documenta lo que eso hace con los datos que solo parecen un número o una fecha:
| Valor en el CSV | Tras abrirlo en Excel | Por qué |
|---|---|---|
| 007 | 7 | Se quitan los ceros a la izquierda de los números. |
| 1234567890123456 | 1234567890123450, en notación científica | Excel guarda 15 dígitos significativos; el resto pasa a ser cero. |
| SEPT2 | 2-Sep | Se lee como fecha (2 de septiembre). |
| MARCH1 | 1-Mar | Se lee como fecha (1 de marzo). |
Los cambios se quedan si el archivo se vuelve a guardar. Los nombres de genes de la tabla son ejemplos reales: un estudio de 2016 en Genome Biology encontró estas conversiones en cerca de una quinta parte de los artículos que publicaban listas de genes en archivos de Excel, y en 2019 el comité de nomenclatura de genes HUGO renombró los genes SEPT y MARCH como SEPTIN y MARCHF por ese motivo. Los códigos postales, los teléfonos, los códigos de producto y los identificadores largos sufren lo mismo.
Para conservar los valores tal cual, importa el archivo en lugar de abrirlo: Datos > Desde texto o CSV, luego Editar para abrir Power Query, selecciona las columnas y cambia su tipo de datos a Texto. Microsoft también sugiere cambiar la extensión de .csv a .txt antes de abrirlo, lo que hace aparecer el asistente de importación de texto, donde eliges cómo se lee cada columna. Las versiones recientes de Excel para Microsoft 365 y Excel 2024 también tienen opciones de conversión automática de datos que permiten desactivar algunos de estos cambios.
Un riesgo al exportar: la inyección de fórmulas
Las hojas de cálculo pueden leer como fórmula un valor que empieza por =, +, - o @. Si un sitio web exporta texto escrito por usuarios, como nombres o comentarios, un valor escrito como fórmula puede ejecutarse como tal cuando alguien abre el archivo, en lugar de mostrarse como texto. El catálogo de debilidades de software de MITRE lo recoge como CWE-1236, más conocido como inyección CSV o de fórmulas.
Afecta al software que escribe archivos CSV a partir de datos no fiables. La defensa habitual es poner una comilla simple (') delante de cualquier valor que empiece por uno de esos caracteres, aunque MITRE advierte de que ninguna solución funciona en todas las hojas de cálculo. Si recibes un CSV de una fuente desconocida, míralo en un editor de texto o impórtalo como texto antes de fiarte de lo que muestra la hoja de cálculo.
¿CSV o JSON?
El CSV es una tabla plana sin tipos: cada valor es texto hasta que un programa decide otra cosa. El JSON, de la primera parte de esta serie, tiene números, true, false, null, listas y objetos anidados. El CSV ocupa menos y se abre en cualquier hoja de cálculo; el JSON es lo que usan la mayoría de las API web. Convertir de uno a otro obliga a decidir qué hacer con esas diferencias.
El conversor de nTools mantiene cada valor del CSV como texto, de modo que 007 y los identificadores largos llegan intactos, y convierte los valores JSON anidados en texto JSON dentro de una celda. Lee datos separados por comas, punto y coma o tabuladores, sigue las reglas de comillas anteriores, avisa de unas comillas sin cerrar y funciona por completo en tu navegador.
Preguntas frecuentes
¿Por qué mi CSV se abre con todo en una sola columna?
El archivo usa un separador distinto del que espera el programa, normalmente punto y coma leído como si fueran comas, o al revés. Impórtalo y elige el separador en lugar de abrirlo con doble clic.
¿Por qué salen mal las tildes al abrir un CSV?
El archivo está en UTF-8 y se leyó con otra codificación. En Excel, impórtalo con Datos > Desde texto o CSV en lugar de abrirlo con doble clic, o guarda el archivo como UTF-8 con marca de orden de bytes.
¿Cómo conservo los ceros a la izquierda al abrir un CSV en Excel?
Importa el archivo en lugar de abrirlo con doble clic y cambia a Texto las columnas con códigos, códigos postales o teléfonos antes de cargarlo.
¿Un CSV puede tener varias hojas o formato?
No. Contiene una sola tabla de texto plano. Al guardar un libro como CSV, Excel guarda solo la hoja actual, y se pierde lo que el texto plano no puede contener, como el formato y los gráficos.
¿Un archivo separado por punto y coma sigue siendo un CSV?
En sentido estricto, el RFC 4180 solo describe comas, pero los archivos con punto y coma son habituales y la mayoría de los programas los aceptan si eliges el separador.
¿El conversor de nTools sube mis datos?
No. La conversión se hace en tu navegador y los datos no se envían a ningún sitio.
Siguiente en la serie Las codificaciones de texto explicadas: UTF-8, Base64 y codificación URL →
Referencias
- RFC 4180 — Common Format and MIME Type for Comma-Separated Values (CSV) Files
- Library of Congress — CSV, Comma Separated Values (RFC 4180)
- Microsoft Support — Import or export text (.txt or .csv) files
- Microsoft Support — Keeping leading zeros and large numbers
- Microsoft Support — Opening CSV UTF-8 files correctly in Excel
- Ziemann, Eren and El-Osta — Gene name errors are widespread in the scientific literature (Genome Biology, 2016)
- HUGO Gene Nomenclature Committee — Summer newsletter 2020
- MITRE — CWE-1236: Improper Neutralization of Formula Elements in a CSV File
Guías relacionadas
- Direcciones IP explicadas: IPv4, IPv6 y los rangos reservados
- Subredes y CIDR explicados: prefijos, máscaras y hosts utilizables
- Registros DNS explicados: A, AAAA, CNAME, MX, TXT y NS
- ¿Está caído un sitio web o solo te pasa a ti? Cómo comprobarlo paso a paso
- Códigos de estado HTTP y errores de Cloudflare: qué significan 403, 404, 429, 500, 503 y 521
- Marcas de tiempo Unix y zonas horarias explicadas
- Contar fechas: días entre fechas, años bisiestos y semanas ISO
- Formatos de imagen explicados: JPEG, PNG, WebP, AVIF y HEIC
- El tamaño de una imagen explicado: píxeles, DPI, peso y calidad
- Las fotos del móvil explicadas: HEIC, metadatos EXIF y tu privacidad
- Fortaleza de las contraseñas explicada: longitud, entropía y frases de contraseña
- Funciones hash: SHA-256, sumas de comprobación y hash de contraseñas
- JSON Web Tokens: claims, firmas y validación segura
- Los UUID explicados: v4, v7 y cómo elegir la versión adecuada
- Los códigos QR explicados: capacidad, corrección de errores y tamaño de impresión
- Porcentajes e IVA explicados: añadir, quitar y encadenar
- Errores comunes en JSON y cómo corregirlos
- Las codificaciones de texto explicadas: UTF-8, Base64 y codificación URL
- Editar PDF en el navegador: qué se conserva al unir, dividir y convertir