ANSI, UTF-8 y saltos de línea: por qué los aplicativos rechazan tu TXT
Por Equipo Técnico TXT Fácil · Publicado el
Un archivo que "se ve bien" y aun así falla
Es una de las situaciones más frustrantes: abrís el TXT, las columnas están alineadas, los importes tienen los ceros que corresponden y el aplicativo igual responde "longitud de registro inválida" o "formato incorrecto en la línea 37". En muchos casos el problema no está en los datos sino en algo que no se ve en pantalla: la codificación del archivo y el tipo de salto de línea.
Qué es la codificación de un archivo de texto
Una computadora guarda cada letra como uno o más números (bytes). La codificación es la tabla que dice qué número corresponde a cada letra. Para los archivos fiscales importan dos:
- ANSI (Windows-1252): cada carácter ocupa exactamente un byte. Incluye letras con tilde y la ñ, todas de un byte. Es la que usaban históricamente los programas de Windows y la que esperan la mayoría de los aplicativos.
- UTF-8: los caracteres comunes (letras sin tilde, números, espacios) ocupan un byte, pero las letras con tilde, la ñ y los símbolos ocupan dos o más. Es la codificación por defecto de la web, de las Mac y de la mayoría de los sistemas modernos.
Para un archivo sin tildes ni ñ, ANSI y UTF-8 son idénticos byte por byte. La diferencia aparece apenas una razón social dice "MUÑOZ" o "CONSTRUCCIÓN".
Por qué esto rompe un diseño de ancho fijo
Los diseños de registro de ARCA, ARBA, AGIP o SIFERE no tienen separadores: el aplicativo sabe que el importe empieza en la posición 109 porque cuenta 108 bytes desde el principio de la línea. Si la razón social tiene una ñ en UTF-8, ese campo ocupa un byte más de lo previsto y todo lo que viene después se corre una posición. El aplicativo lee el último dígito de un importe como el primero del siguiente campo, encuentra letras donde esperaba números y rechaza la línea.
Por eso el error casi nunca menciona la ñ: el aplicativo detecta el síntoma, que aparece varios campos más adelante.
El BOM: tres bytes invisibles
Algunos editores, como el Bloc de notas en ciertas versiones, agregan al principio de los archivos UTF-8 una marca llamada BOM (Byte Order Mark), formada por tres bytes que no se ven. El aplicativo los lee como parte de la primera línea, que queda tres caracteres más larga que las demás. Si te rechazan solo la línea 1 y las demás pasan, sospechá del BOM.
Saltos de línea: CRLF, LF y CR
El final de cada línea también se guarda con caracteres invisibles, y no todos los sistemas usan los mismos:
| Tipo | Bytes | Quién lo usa |
|---|---|---|
| CRLF | Retorno de carro + salto de línea | Windows, y lo que esperan los aplicativos fiscales |
| LF | Solo salto de línea | Mac actuales, Linux, muchos sistemas web |
| CR | Solo retorno de carro | Mac muy antiguas |
Un archivo con saltos LF puede abrirse bien en un editor moderno y, sin embargo, el aplicativo lo lee como una sola línea gigante, o cuenta un byte menos por registro. Al revés, algunos validadores cuentan el CR como parte del registro si el archivo mezcla tipos de salto.
Cómo guardar correctamente
En Windows, con el Bloc de notas
- Archivo › Guardar como.
- En Codificación, elegí ANSI.
- El Bloc de notas usa CRLF por defecto.
En Mac, con TextEdit
- Formato › Convertir a texto sin formato.
- Al guardar, en Codificación de texto sin formato, elegí Occidental (Windows Latin 1).
- TextEdit no permite elegir el tipo de salto de línea: si el archivo viene de una Mac, conviene pasarlo por el limpiador para dejarlo en CRLF.
Lo que conviene evitar
- Abrir y guardar el TXT con Excel: puede quitar ceros a la izquierda, convertir números largos en notación científica o agregar comillas.
- Copiar y pegar el contenido en un correo o en un chat: se pierden los espacios del final y se cambian las comillas.
- Guardar en la nube y descargar de nuevo: algunos servicios convierten los archivos a UTF-8 al previsualizarlos.
Tildes en ANSI: ¿se pueden usar?
En ANSI una tilde ocupa un solo byte, así que no corre las posiciones. Aun así, varios aplicativos validan que los campos de texto contengan solo letras sin acento, números y algunos signos. Lo más seguro es reemplazar á por a, ñ por n y así con el resto. Es lo que hacen los generadores de TXT Fácil al armar cada archivo y lo que hace el limpiador ANSI con un archivo existente.
Diagnóstico rápido
- Falla solo la línea 1: probablemente un BOM.
- Fallan solo algunas líneas, siempre con razones sociales con ñ o tildes: archivo en UTF-8.
- El aplicativo dice que hay una sola línea: saltos LF o CR.
- Fallan todas las líneas por un carácter: el diseño cambió o falta un campo; revisá el largo con el auditor del generador correspondiente.