Agregar BOM al XML para pasar el validador
Publicado: Lun Jul 11, 2011 10:51 am
Hola Foro,
Para identificar el tipo de codificado de un XML se agrega al principio del mismo un BOM (Byte-Order-Mark) según leo (http://www.opentag.com/xfaq_enc.htm#enc_bom), no es obligatorio para UTF-8 pero resulta que a los del SAT se les ocurrió agregar al validador la verificación de esa marca, los comprobantes que no la tengan 'están mal hechos' desde entrada.
Yo creo que el SAT va a dar marcha atrás sobre todo por el hecho de que para UTF-8 no es obligatorio, en fin.
Lo que hay que hacer es arreglarlo...
Básicamente lo que se debe de agregar es la cadena al inicio del archivo.
Para los que utilizan la clase CFD29 (https://groups.google.com/forum/#!forum ... ica-mexico)
1. Al inicio del código definan
#DEFINE _BOM CHR(239)+CHR(187)+CHR(191)
2. En el procedimiento CrearCFD(), busquen las siguientes líneas y añadan lo que falta, insetar el BOM
*-- Se graba de nuevo el Xml ya en su forma final
cBuff = CFDAsc2UTF8(cBuff)
*-- 11/07/11 - Arturo Ramos - Agrega BOM (Byte-Order-Mark) correspondiente a UTF-8
cBuff = _BOM + cBuff
STRTOFILE(cBuff,pcArchivo)
cBuff=""
Con esto sus comprobantes tendrán la marca que se necesita y se pueden validar.
Para los que tengan su propio código no será difícil adaptar la misma idea, básicamente es abrir el XML (en cualquier momento) agregar la cadena al principio: CHR(239)+CHR(187)+CHR(191) y guardarlo.
Saludos.
Para identificar el tipo de codificado de un XML se agrega al principio del mismo un BOM (Byte-Order-Mark) según leo (http://www.opentag.com/xfaq_enc.htm#enc_bom), no es obligatorio para UTF-8 pero resulta que a los del SAT se les ocurrió agregar al validador la verificación de esa marca, los comprobantes que no la tengan 'están mal hechos' desde entrada.
Yo creo que el SAT va a dar marcha atrás sobre todo por el hecho de que para UTF-8 no es obligatorio, en fin.
Lo que hay que hacer es arreglarlo...
Básicamente lo que se debe de agregar es la cadena al inicio del archivo.
Para los que utilizan la clase CFD29 (https://groups.google.com/forum/#!forum ... ica-mexico)
1. Al inicio del código definan
#DEFINE _BOM CHR(239)+CHR(187)+CHR(191)
2. En el procedimiento CrearCFD(), busquen las siguientes líneas y añadan lo que falta, insetar el BOM
*-- Se graba de nuevo el Xml ya en su forma final
cBuff = CFDAsc2UTF8(cBuff)
*-- 11/07/11 - Arturo Ramos - Agrega BOM (Byte-Order-Mark) correspondiente a UTF-8
cBuff = _BOM + cBuff
STRTOFILE(cBuff,pcArchivo)
cBuff=""
Con esto sus comprobantes tendrán la marca que se necesita y se pueden validar.
Para los que tengan su propio código no será difícil adaptar la misma idea, básicamente es abrir el XML (en cualquier momento) agregar la cadena al principio: CHR(239)+CHR(187)+CHR(191) y guardarlo.
Saludos.