Re: Validador SAT-Error: CFD no codificado en: UTF-8.
Publicado: Jue Jul 14, 2011 1:08 pm
hola alguien ya bajo y probo si funciona correctamente el xml_bom.exe????
FACTURA ELECTRONICA EN MEXICO
https://www.validacfd.com/phpbb3/
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"
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
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.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); } } } }
Código: Seleccionar todo
& = &
" = "
Ñ = Ñ
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
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!!