No codifica en UTF-8

Para los que programamos en Delphi, aqui estan las respuestas
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
omarloi
Mensajes: 22
Registrado: Mar Jul 13, 2010 2:16 pm

No codifica en UTF-8

Mensajepor omarloi » Sab Jun 30, 2012 12:45 pm

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.
Adjuntos
PAME741116NX8-26.xml
(2.85 KiB) Descargado 619 veces
hex.JPG
hex.JPG (178.6 KiB) Visto 18455 veces

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: No codifica en UTF-8

Mensajepor Dado » Sab Jun 30, 2012 4:34 pm

En Delphi usa UTF8Encode y UTF8Decode
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

omarloi
Mensajes: 22
Registrado: Mar Jul 13, 2010 2:16 pm

Re: No codifica en UTF-8

Mensajepor omarloi » Sab Jun 30, 2012 7:08 pm

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!! :shock:

Te adjunto dos XML exactamente iguales pero con el detalle que te comento.

Saludos y Gracias.
Adjuntos
PAME741116NX8-26.xml
(2.79 KiB) Descargado 681 veces
PAME741116NX8-26 con ñ.xml
(2.79 KiB) Descargado 641 veces

omarloi
Mensajes: 22
Registrado: Mar Jul 13, 2010 2:16 pm

Re: No codifica en UTF-8

Mensajepor omarloi » Dom Jul 01, 2012 6:10 pm

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 &quot; 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;


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..

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;


Ya no se que mas hacer. Ayuda por favor !! :D

Saludos y Gracias.

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: No codifica en UTF-8

Mensajepor Dado » Dom Jul 01, 2012 9:06 pm

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 &quot; NO ES UTF8 eso es codificacion html/xml
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

DiegoPM
Mensajes: 1
Registrado: Jue Oct 03, 2013 5:57 pm

Re: No codifica en UTF-8

Mensajepor DiegoPM » Jue Oct 03, 2013 6:02 pm

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


Volver a “Delphi”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados