Error en archivos .XML que la SAT manda por correo o permite bajar

Advertencia. Artículo con contenido técnico.

Resumen

Los programadores de la SAT no están manejando adecuadamente los archivos .XML y eso genera un problema. Este es el problema: el contenido del archivo está codificado ANSI pero la definición del XML dice que es UTF-8.

Los Archivos XML Enviados por la SAT Generan Error

El estándard para manejo de archivos XML indica que la primera línea debe contener un texto similar a la que traen los archivos de FEL enviados por la SAT que dice que el encoding es UTF-8

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

Nos interesa “encoding” que se refiere a cómo se guardan los caracteres dentro del archivo.
Dicho de otra manera Qué caracteres pueden venir en el archivo y cómo están representados

El Error se Genera

Cuando los datos en base a los que se hizo la FEL contienen caracteres “no estándard”, por ejemplo las letras tildadas, la eñe.

El archivo que la SAT está mandando dice que es UTF-8 pero ellos no lo están generando como UTF-8, y los sistemas de XML que son muy estrictos no lo aceptan. Así es el XML, estricto.

Por eso no lo acepta Diamante Contador y tampoco los archivos específicos para XML como XML Copy, o Notepad++ con plugin de XML

La SAT está mandando el archivo en codificación ANSI, pero le pone en la primera línea que es UTF-8 por lo cual no puede ser interpretado.

Tecnicismos de Programación

Hay diferentes "encoding "

<?xml version='1.0' encoding='US-ASCII' ?>
<?xml version='1.0' encoding='ISO-10646-UCS-2’?>
<?xml version='1.0' encoding='ISO-8859-1’?>
<?xml version='1.0' encoding='Shift-JIS’?>

Ejemplo de Codificaciones: las Letras á y Á

En algunos sistemas de codificación se necesita escribir mas de un byte para representar un caracter que estamos acostumbrados a ver como único.

Caracter ANSI UTF-8
á 225 195,161 (Hexadecimales c3,a1)
Á 193 195,129 (Hexadecimales c3,81)

Un archivo con solo un caracter: la letra Á
Si es generado en ANSI va a tener una longitud de 1 byte
Si es generado en UTF-8 va a tener una longitud de 2 bytes. (En realidad tienen unos mas)

Y lo mas importante: quien va a leerlo, tiene que saber “cómo estaba pensando el que lo escribió”
En otras palabras, qué sistema de codificación utilizó.

Si lee el archivo del párrafo anterior que fue grabado UTF-8 y cree que es ANSI leerá dos caracteres.
Si lee el archivo del párrafo anterior que fue grabado en ANSI y cree que es UTF-8 no podrá interpretarlo.

Esta es la imagen de los bytes recibidos en un archivo de la SAT
para un apellido “GONZÁLEZ” con A tildada.

He dejado el cuadrito negro para señalar la primera letra del nombre G
El quinto byte es el hexadecimal c1 (decimal es 193)
que corresponde un Á en codificación ANSI que no coincide con UTF-8 que dice el archivo al principio.

image

2 Me gusta

@rtusher Gracias por la aclaración, ahora entiendo porque razón DC2 al cargar el XML que viene adjunto a la notificación de la SAT no lo está interpretando correctamente.

Ya decía yo que era muy bueno lo que SAT en teoría está enviando como XML, lo cual NO nos sirve de nada porque de todas formas hay que ingresar a pie la información de la FEL recibida; ójala alguien veo esto y lo corrija para poder operar adecuadamente el famoso XML.

En conclusión: debemos ingresar la FEL a pie descargando el archivo PDF.

PRIMERA SOLUCIÓN

Línea de comando con PowerShell

Get-Content <SrcFile.txt> -Encoding Oem | Out-File <DestFile.txt> -Encoding utf8
1 me gusta

SOLUCIÓN DOS

Usar un convertidor gráfico como Codepage Converter

1 me gusta

Buenos días, soy nuevo en este foro, entiendo que este programa sube de forma automática el archivo total de facturas de compras y ventas bajadas de la AV de la SAT en formato XML. Espero sus comentarios.

Luis Sique Morales

Ing.@rtusher 1000 gracias, funciono la segunda opción, ya pude cargar el XML debidamente convertido a DC2.

Buena Tarde:

En este caso Luis existe una opción (FEL) en la ventana de ingreso de documentos en la cual le permite exportar archivos XML o CSV de la Agencia Virtual hacia DC2, las facturas de Ventas todas vez sean FEL las podrá migrar y las Compras solamente aquellos comercios que ya se encuentren en FEL y las pueda consultar en su AV, también podrán ser exportadas.

Saludos;

AR

Hola @55158012 Luis está en lo correcto, solo las baja de AV Ventas o Compras en archivos separados, y las sube individualmente y listo.

Gracias por la información y tomarse el tiempo.