
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.
-
- Mensajes: 16
- Registrado: Lun Mar 14, 2011 1:14 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
hola alguien ya bajo y probo si funciona correctamente el xml_bom.exe????
-
- Mensajes: 1
- Registrado: Jue Jul 14, 2011 1:16 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
Les dejo una "Solución" manual para VB6:
Espero que les sirva!!!
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"
-
- Mensajes: 17
- Registrado: Mié Jul 13, 2011 5:17 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
GRacias CesarIn, te acabo de enviar un correo con el xml, ojala puedas ayudarme. Mil graciasCesarIn 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
- acanas
- Mensajes: 477
- Registrado: Mar Ene 11, 2011 3:18 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
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
-
- Mensajes: 89
- Registrado: Jue Dic 30, 2010 8:32 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
Funciona muy bien ACANAS.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); } } } }
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
- acanas
- Mensajes: 477
- Registrado: Mar Ene 11, 2011 3:18 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
Si ya lo probé y funciona muy bien con el validador del SAT
, no problem para eso publiqué el código para que sea de dominio público.

Zyphersoft Development
-
- Mensajes: 10
- Registrado: Lun Jul 11, 2011 4:31 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
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.:
etc.
(JKARRENO ya te envie mail con comentarios a tu problema, espero con esto lo soluciones. Saludos)
Para todos los caracteres especiales deberan de usar las secuencias de escape correspondientes. P.e.:
Código: Seleccionar todo
& = &
" = "
Ñ = Ñ
(JKARRENO ya te envie mail con comentarios a tu problema, espero con esto lo soluciones. Saludos)
-
- Mensajes: 19
- Registrado: Lun Ene 10, 2011 2:25 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
SOS GROSO!!, qee código tan elegante (: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
gracias, me sirvió, PHP AL PODER!!

updating :: además codificas en inglés! OMFG!!

-
- Mensajes: 89
- Registrado: Jue Dic 30, 2010 8:32 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
http://www.codingforums.com/archive/ind ... 29314.htmlhaLCkoniCka escribió:SOS GROSO!!, qee código tan elegante (: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
gracias, me sirvió, PHP AL PODER!!
updating :: además codificas en inglés! OMFG!!

-
- Mensajes: 1
- Registrado: Jue Jul 14, 2011 6:59 pm
Re: Validador SAT-Error: CFD no codificado en: UTF-8.
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;
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;