Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Validador SAT-Error: CFD no codificado en: UTF-8.

La Razon de ser de este sitio, aqui va a ver anuncios, comentarios dudas y quejas de este programa de validacion de Comprobantes Fiscales Digitales.
Cerrado
Betiux
Mensajes: 16
Registrado: Lun Mar 14, 2011 1:14 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por Betiux »

hola alguien ya bajo y probo si funciona correctamente el xml_bom.exe????
diegarcia
Mensajes: 1
Registrado: Jue Jul 14, 2011 1:16 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por diegarcia »

Les dejo una "Solución" manual para VB6:

Código: Seleccionar todo

Dim sBuf As String
Dim lArchOri As Long
Dim lArchDes As Long
Dim bPaso As Boolean
Dim nombreXML as String

    FileCopy nombreXML, nombreXML + ".bak"
    lArchOri = FreeFile
    
    Open nombreXML + ".bak" For Input As lArchOri
    lArchDes = FreeFile
    Open nombreXML For Output As lArchDes
    Do While Not EOF(lArchOri)
        If Not bPaso Then
            Print #lArchDes, Chr(239) + Chr(187) + Chr(191); 'Aca meto el BOM
            bPaso = True
        End If
        Line Input #lArchOri, sBuf
        Print #lArchDes, sBuf
    Loop
    Close lArchOri
    Close lArchDes
    Kill nombreXML + ".bak"
Espero que les sirva!!!
jkarreno
Mensajes: 17
Registrado: Mié Jul 13, 2011 5:17 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por jkarreno »

CesarIn escribió:A ver JKARRENO al parecer el BOM esta bien insertado. Si quieres enviame tu XML por mail pa ver si le puedo encontrar cual es el error. Mi cuenta es cjimenez@ofipapeleria.com. Saludos
GRacias CesarIn, te acabo de enviar un correo con el xml, ojala puedas ayudarme. Mil gracias
Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por acanas »

Esperaré hasta el final hasta ver más certeza jurídica y ya que me llegué la lumbre haré algo, de momento puedo compartir un código viejito en .NET que utilizó en linux para convertir archivos ISO889-1 A en UTF-8 con BOM listo para compilar :), este programita puede agarrar un folder completo y sus subfolders y convertir todos los archivos texto que quieran a UTF-8 con BOM o sin BOM, pueden especificar en el parámetro que tipo de extensión desean convertir.

Código: Seleccionar todo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Convert2utf8
{
    class Program
    {
        static void Main(string[] args)
        {

            if (args.Length == 1)
            {
                if (!String.IsNullOrEmpty( args[0].Trim()))
                {
                    if (args[0].Trim() == "--help" || args[0].Trim() =="-h")
                    {
                        Console.WriteLine("Conver2utf8 es un programa para conversion de archivos texto a utf8");
                        Console.WriteLine("Argumentos:");
                        Console.WriteLine("--help o -h: Esta ayuda");
                        Console.WriteLine("Argumento 0: Ruta o directorio base para convertir archivos");
                        Console.WriteLine("Argumento 1: Nombre de extension de archivo a convertir");
                        Console.WriteLine("Argumento 2: Define si se desea incluir BOM (Bit Order Of Mark) en conversion,\n" +
                            " true o false son los valores permitidos"); 
                        return;
                    }
                }
                return;
            }

            if (args.Length == 0 || args.Length < 3)
            {
                Console.WriteLine("Favor de especificar parametros de entrada");
                return;
            }
         
            string strPath = args[0];
            string strType = args[1];
            bool blnBOM = false;

            if (!Boolean.TryParse(args[2], out blnBOM))
            {
                Console.WriteLine("Favor de especificar true o false en tercer argumento \n"+
                    " para definir si se requiere BOM(Bit Order of Mark) en codificación de archivos");
                return;
            }            

            if (!Directory.Exists(strPath))
            {
                Console.WriteLine("El directorio:" + strPath + " No existe!");                    
                return;
            }

            foreach (var f in new DirectoryInfo(strPath).GetFiles("*."+strType , SearchOption.AllDirectories))
            {
                string s = File.ReadAllText(f.FullName);
                Console.WriteLine(String.Format("Convirtiendo el archivo {0} a utf8", f.FullName));
                UTF8Encoding enc = new UTF8Encoding(blnBOM);  
                File.WriteAllText(f.FullName, s,enc);
            }
        }
    }
}
Zyphersoft Development
poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 8:32 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por poliman »

acanas escribió:Esperaré hasta el final hasta ver más certeza jurídica y ya que me llegué la lumbre haré algo, de momento puedo compartir un código viejito en .NET que utilizó en linux para convertir archivos ISO889-1 A en UTF-8 con BOM listo para compilar :), este programita puede agarrar un folder completo y sus subfolders y convertir todos los archivos texto que quieran a UTF-8 con BOM o sin BOM, pueden especificar en el parámetro que tipo de extensión desean convertir.

Código: Seleccionar todo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Convert2utf8
{
    class Program
    {
        static void Main(string[] args)
        {

            if (args.Length == 1)
            {
                if (!String.IsNullOrEmpty( args[0].Trim()))
                {
                    if (args[0].Trim() == "--help" || args[0].Trim() =="-h")
                    {
                        Console.WriteLine("Conver2utf8 es un programa para conversion de archivos texto a utf8");
                        Console.WriteLine("Argumentos:");
                        Console.WriteLine("--help o -h: Esta ayuda");
                        Console.WriteLine("Argumento 0: Ruta o directorio base para convertir archivos");
                        Console.WriteLine("Argumento 1: Nombre de extension de archivo a convertir");
                        Console.WriteLine("Argumento 2: Define si se desea incluir BOM (Bit Order Of Mark) en conversion,\n" +
                            " true o false son los valores permitidos"); 
                        return;
                    }
                }
                return;
            }

            if (args.Length == 0 || args.Length < 3)
            {
                Console.WriteLine("Favor de especificar parametros de entrada");
                return;
            }
         
            string strPath = args[0];
            string strType = args[1];
            bool blnBOM = false;

            if (!Boolean.TryParse(args[2], out blnBOM))
            {
                Console.WriteLine("Favor de especificar true o false en tercer argumento \n"+
                    " para definir si se requiere BOM(Bit Order of Mark) en codificación de archivos");
                return;
            }            

            if (!Directory.Exists(strPath))
            {
                Console.WriteLine("El directorio:" + strPath + " No existe!");                    
                return;
            }

            foreach (var f in new DirectoryInfo(strPath).GetFiles("*."+strType , SearchOption.AllDirectories))
            {
                string s = File.ReadAllText(f.FullName);
                Console.WriteLine(String.Format("Convirtiendo el archivo {0} a utf8", f.FullName));
                UTF8Encoding enc = new UTF8Encoding(blnBOM);  
                File.WriteAllText(f.FullName, s,enc);
            }
        }
    }
}
Funciona muy bien ACANAS.
Si no te molesta adjunto el ejecutable, para los que no utilizan C# puedan obetener este beneficio.

Forma de uso:

ACANAS.exe C:\directorios\subidirectorio xml true


Gracias.
Adjuntos
ACANAS.zip
ACANAS
(2.88 KiB) Descargado 521 veces
Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por acanas »

Si ya lo probé y funciona muy bien con el validador del SAT :D , no problem para eso publiqué el código para que sea de dominio público.
Zyphersoft Development
CesarIn
Mensajes: 10
Registrado: Lun Jul 11, 2011 4:31 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por CesarIn »

OJO. Si en el contenido de sus archivos XML tienen caracteres no UTF, podrian tener archivos no validos (erroneos hasta para el mismo parser de los exploradores).

Para todos los caracteres especiales deberan de usar las secuencias de escape correspondientes. P.e.:

Código: Seleccionar todo

& = &
"  = "
Ñ = Ñ
etc.

(JKARRENO ya te envie mail con comentarios a tu problema, espero con esto lo soluciones. Saludos)
haLCkoniCka
Mensajes: 19
Registrado: Lun Ene 10, 2011 2:25 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por haLCkoniCka »

bonzipper escribió:Yo utilice esta función para el PHP

<?php

function writeUTF8File($filename,$content) {
$f=fopen($filename,"w");
# Now UTF-8 - Add byte order mark
fwrite($f, pack("CCC",0xef,0xbb,0xbf));
fwrite($f,$content);
fclose($f);
}
?>

Siendo la linea mas importante esta:
fwrite($f, pack("CCC",0xef,0xbb,0xbf));

Saludos
SOS GROSO!!, qee código tan elegante (:
gracias, me sirvió, PHP AL PODER!! :P

updating :: además codificas en inglés! OMFG!! :o
poliman
Mensajes: 89
Registrado: Jue Dic 30, 2010 8:32 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por poliman »

haLCkoniCka escribió:
bonzipper escribió:Yo utilice esta función para el PHP

<?php

function writeUTF8File($filename,$content) {
$f=fopen($filename,"w");
# Now UTF-8 - Add byte order mark
fwrite($f, pack("CCC",0xef,0xbb,0xbf));
fwrite($f,$content);
fclose($f);
}
?>

Siendo la linea mas importante esta:
fwrite($f, pack("CCC",0xef,0xbb,0xbf));

Saludos
SOS GROSO!!, qee código tan elegante (:
gracias, me sirvió, PHP AL PODER!! :P

updating :: además codificas en inglés! OMFG!! :o
http://www.codingforums.com/archive/ind ... 29314.html
:roll:
robertosvc
Mensajes: 1
Registrado: Jue Jul 14, 2011 6:59 pm

Re: Validador SAT-Error: CFD no codificado en: UTF-8.

Mensaje por robertosvc »

Para estar prevenidos por si los malditos de SAT siguen en sus tonterias
este codigo lo hice para delphi y funciono aunque en este momento no tengo un xml real para hacer una prueba definitiva

espero les sea util

saludos

procedure Bom(archi1,archi2:string);
var

FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of byte;
Buf2: array[1..3] of byte;
nume:byte;
begin

AssignFile(FromF,archi1);//XML ANTERIOR
Reset(FromF, 1);

// BOM
// CHR(239) & CHR(187) & CHR(191)
AssignFile(ToF,archi2); //salida xml

Rewrite(ToF, 1);
buf2[1]:=239;buf2[2]:=187;buf2[3]:=191;
BlockWrite(ToF,buf2, 3, NumWritten);

repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);

CloseFile(FromF);
CloseFile(ToF);


end;
Cerrado