Hola a todos!.
Tengo un problema con los XML que genero, al parecer no están codificados en UTF-8 pues el PAC me marca un error de codificación y también al abrirlo con el bloc de notas y darle guardar como, me marca en la codificación: ANSI.. (No conosco otra manera de comprobar la codificación.) Tampoco tengo caracteres raros o cosas de esas, y se me acaban las ideas!.
Les adjunto una toma del editor hexa y el xml.
Saludos Y Gracias.
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
.
No codifica en UTF-8
-
- Mensajes: 22
- Registrado: Mar Jul 13, 2010 1:16 pm
No codifica en UTF-8
- Adjuntos
-
- PAME741116NX8-26.xml
- (2.85 KiB) Descargado 701 veces
-
- hex.JPG (178.6 KiB) Visto 19603 veces
- Dado
- Mensajes: 15922
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: No codifica en UTF-8
En Delphi usa UTF8Encode y UTF8Decode
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 22
- Registrado: Mar Jul 13, 2010 1:16 pm
Re: No codifica en UTF-8
Gracias Dado!.
Ya lo use pero sigue sin codificarlo, sin embargo descubri que si cambias el nombre del emisor y le pones una ñ si genera el archivo en formato UTF-8
Por otro lado si no se la pones no.. Esto esta super raro!!
Te adjunto dos XML exactamente iguales pero con el detalle que te comento.
Saludos y Gracias.
Ya lo use pero sigue sin codificarlo, sin embargo descubri que si cambias el nombre del emisor y le pones una ñ si genera el archivo en formato UTF-8
Por otro lado si no se la pones no.. Esto esta super raro!!
Te adjunto dos XML exactamente iguales pero con el detalle que te comento.
Saludos y Gracias.
- Adjuntos
-
- PAME741116NX8-26.xml
- (2.79 KiB) Descargado 756 veces
-
- PAME741116NX8-26 con ñ.xml
- (2.79 KiB) Descargado 723 veces
-
- Mensajes: 22
- Registrado: Mar Jul 13, 2010 1:16 pm
Re: No codifica en UTF-8
Asi de sencillo,
Si la factura no contiene una letra acentuada o una ñ, no codifica en UTF-8, me eh fijado en bloc de notas que los caracteres " & < ( menos los acentos y ñ ) si me los codifica por ejemplo a " sin embargo al darle guardar como me marca la codificacion ANSI..
Si la factura contiene un acento o una ñ, en bloc de notas me los muestra tal cual y al darle guardar como me marca la codificacion UTF-8.
Eh usado varios metodos para guardar la factura y codificarla pero con todos pasa lo msimo:
Y lo mismo pasa si la variable XML en ves de ser un XMLDocument lo declaro como TStringList.
El codigo para timbrar es el siguiente( Antes el proveedor me marcaba error en la codificacion y con este metodo ya no, pero pasa lo mismo:
Declaro el XMLDoc.XML.Text := Respuesta[3]; XML.SaveToFile(Fname); y si no hay acento o ñ lo codifica en ANSI, comienzo a pensar que el error esta al guardar el XML ó que todas mis facturas si estan en UTF-8 y no se de que dependa que el bloc de notas me marque una codificacion u otra..
Ya no se que mas hacer. Ayuda por favor !!
Saludos y Gracias.
Si la factura no contiene una letra acentuada o una ñ, no codifica en UTF-8, me eh fijado en bloc de notas que los caracteres " & < ( menos los acentos y ñ ) si me los codifica por ejemplo a " sin embargo al darle guardar como me marca la codificacion ANSI..
Si la factura contiene un acento o una ñ, en bloc de notas me los muestra tal cual y al darle guardar como me marca la codificacion UTF-8.
Eh usado varios metodos para guardar la factura y codificarla pero con todos pasa lo msimo:
Código: Seleccionar todo
var
instream : TStringStream;
outStream : TFileStream;
XML : TXMLDocument;
begin
InStream := TStringStream.Create('<?xml version="1.0" encoding="UTF-8" ?>' + #13#10 + CFD.XML, TEncoding.UTF8);
OutStream := TFileStream.Create('C:\test.xml', fmCreate);
try
XML := TXMLDocument.Create(nil);
XML.LoadFromStream(InStream);
// XML.Active := True;
// XML.Encoding := 'UTF-8';
XML.SaveToStream(OutStream);
finally
FreeAndNil(inStream);
FreeAndNil(outStream);
XML.Free;
end;
El codigo para timbrar es el siguiente( Antes el proveedor me marcaba error en la codificacion y con este metodo ya no, pero pasa lo mismo:
Declaro el XMLDoc.XML.Text := Respuesta[3]; XML.SaveToFile(Fname); y si no hay acento o ñ lo codifica en ANSI, comienzo a pensar que el error esta al guardar el XML ó que todas mis facturas si estan en UTF-8 y no se de que dependa que el bloc de notas me marque una codificacion u otra..
Código: Seleccionar todo
temp := Tstringlist.Create;
InStream := TStringStream.Create('<?xml version="1.0" encoding="UTF-8" ?>' + #13#10 + CFD.XML, TEncoding.UTF8);
temp.LoadFromStream(instream);
ServicioFD := GetWS_FD_TFDSoap;
Respuesta := ServicioFD.TimbrarPruebaCFDI( usr, pass, temp.Text);
FreeAndNil(instream);
temp.Free;
Saludos y Gracias.
- Dado
- Mensajes: 15922
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: No codifica en UTF-8
No uses, absolutamente para nada el bloc de notas ni el explorer para confirmar la codificacion UTF8
Debes saber que esos dos hacen LA CONVERSION AUTOMATICA y por eso NUNCA vas a poder ver una codificacion UTF8 nativa en el bloc de notas o en algun explorador
He publicado varias veces este hecho, debes usar un editor hexadecimal, y si en lugar de una eñe ves dos bytes extraños significa que si esta en utf8
busca aqui en el foro "Hex Editor Neo" es el editor que yo uso y te pido que busques porque este asunto se ha discutido una docena de veces y se han publicado ejemplos.
Por ultimo, usa la logica...........si tienes el texto "el niño se comió un dulce" (eñe y o acentuada) como esperas verlo en el bloc de notas si NO estuviera codificado......y como esperabas verlo en el bloc de notas si SI estuviera codificado.......respuesta : se va a ver exactamente igual y no vas a poder distinguir si INTERNAMENTE esta o no en utf8
Por ultimo la secuencia " NO ES UTF8 eso es codificacion html/xml
Debes saber que esos dos hacen LA CONVERSION AUTOMATICA y por eso NUNCA vas a poder ver una codificacion UTF8 nativa en el bloc de notas o en algun explorador
He publicado varias veces este hecho, debes usar un editor hexadecimal, y si en lugar de una eñe ves dos bytes extraños significa que si esta en utf8
busca aqui en el foro "Hex Editor Neo" es el editor que yo uso y te pido que busques porque este asunto se ha discutido una docena de veces y se han publicado ejemplos.
Por ultimo, usa la logica...........si tienes el texto "el niño se comió un dulce" (eñe y o acentuada) como esperas verlo en el bloc de notas si NO estuviera codificado......y como esperabas verlo en el bloc de notas si SI estuviera codificado.......respuesta : se va a ver exactamente igual y no vas a poder distinguir si INTERNAMENTE esta o no en utf8
Por ultimo la secuencia " NO ES UTF8 eso es codificacion html/xml
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 1
- Registrado: Jue Oct 03, 2013 4:57 pm
Re: No codifica en UTF-8
Hola omarloi, despues de tanto Tiempo me encuantro en una situacion Similar a la tuya (Tal vez sea el Mismo PAC), ya probe con las consejos de DaDo y Veo que si estoy mandando la cadena en UTF-8 , quisiera saber si es posible como solucionaste esta situacion , Saludos