Página 1 de 2
utf-8 en mayuscula o en minuscula
Publicado: Jue Ene 20, 2011 4:41 pm
por dcerick
Hola, estoy usando C# y al momento de serializar mi clase me pone en la primer línea
<?xml version="1.0" encoding="utf-8"?>
Y el PAC (Edicom), me dice que tiene que ser
<?xml version="1.0" encoding="UTF-8"?>
hay alguna gorma de que al momento de serializar ponga el UTF-8 en mayusculas?
Saludos,
Re: utf-8
Publicado: Jue Ene 20, 2011 5:03 pm
por acanas
dcerick escribió:Hola, estoy usando C# y al momento de serializar mi clase me pone en la primer línea
<?xml version="1.0" encoding="utf-8"?>
Y el PAC (Edicom), me dice que tiene que ser
<?xml version="1.0" encoding="UTF-8"?>
hay alguna gorma de que al momento de serializar ponga el UTF-8 en mayusculas?
Saludos,
Yo también generó mi XML a través de serialización y me fije que me pone en la primera línea utf-8 en minúsculas, en el validador sintactico de xml de Visual Studio 2008 lo dá como válido de las 2 formas (minúsculas y mayúsculas). Pero checando en la página utf8.com dice:
<?xml version="1.0" encoding="UTF-8" ?>
Está es una posible respuesta, Microsoft en su interpretación de la especificación de XML no lo considera como inválido:
http://stackoverflow.com/questions/9215 ... -sensitive
Se supone que no lo deben forzar a ser case sensitive el tag inicial.
Aquí esta el fundamento:
http://www.w3.org/TR/2008/REC-xml-20081 ... arencoding
Aquí esta el mero mole:
In an encoding declaration, the values " UTF-8 ", " UTF-16 ", " ISO-10646-UCS-2 ", and " ISO-10646-UCS-4 " should be used for the various encodings and transformations of Unicode / ISO/IEC 10646, the values " ISO-8859-1 ", " ISO-8859-2 ", ... " ISO-8859- n " (where n is the part number) should be used for the parts of ISO 8859, and the values " ISO-2022-JP ", " Shift_JIS ", and " EUC-JP " should be used for the various encoded forms of JIS X-0208-1997. It is recommended that character encodings registered (as charsets) with the Internet Assigned Numbers Authority [IANA-CHARSETS], other than those just listed, be referred to using their registered names; other encodings should use names starting with an "x-" prefix. XML processors should match character encoding names in a case-insensitive way and should either interpret an IANA-registered name as the encoding registered at IANA for that name or treat it as unknown (processors are, of course, not required to support all IANA-registered encodings).
Creo que esto es un argumento suficiente para que EDICOM te haga caso, me imagino que hay muchos clientes iguales, no les cuesta casi nada hacer eso.
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Ene 20, 2011 6:36 pm
por acanas
dcerick, si de plano EDICOM se pone sus moños y se sienta en su macho utiliza esta pequeña rutina:
Código: Seleccionar todo
private XmlDocument CambiarXmlEncoding(XmlDocument xmlDoc, string nuevoEncoding)
{
if (xmlDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
{
XmlDeclaration xmlDeclaration = (XmlDeclaration)xmlDoc.FirstChild;
xmlDeclaration.Encoding = nuevoEncoding;
}
return xmlDoc;
}
private void CFD()
{
string strXmlPath = @"c:/demoCFD.xml";
XmlDocument xdoc = new XmlDocument();
XmlTextReader xt = new XmlTextReader(strXmlPath);
xdoc.Load(xt);
CambiarXmlEncoding(xdoc, "UTF-8");
xt.Close();
xdoc.Save(strXmlPath);
}
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Ene 20, 2011 6:45 pm
por dcerick
acanas escribió:dcerick, si de plano EDICOM se pone sus moños y se sienta en su macho utiliza esta pequeña rutina:
Código: Seleccionar todo
private XmlDocument CambiarXmlEncoding(XmlDocument xmlDoc, string nuevoEncoding)
{
if (xmlDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
{
XmlDeclaration xmlDeclaration = (XmlDeclaration)xmlDoc.FirstChild;
xmlDeclaration.Encoding = nuevoEncoding;
}
return xmlDoc;
}
private void CFD()
{
string strXmlPath = @"c:/demoCFD.xml";
XmlDocument xdoc = new XmlDocument();
XmlTextReader xt = new XmlTextReader(strXmlPath);
xdoc.Load(xt);
CambiarXmlEncoding(xdoc, "UTF-8");
xt.Close();
xdoc.Save(strXmlPath);
}
Muchas grácias de hecho antes de tu primer respuesta yo lo solucioné de la siguiente forma :
Código: Seleccionar todo
System.Xml.XmlDocument oDocument = new System.Xml.XmlDocument();
oDocument.Load(strRutaArchivoXml);
oDocument.InnerXml = oDocument.InnerXml.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
oDocument.Save(strRutaArchivoXml);
Tu código se vé como que más elegante jejejeje.
Lo probaré.. igual ya le mandé el correo al tipo ajjaja con la info que me pasaste xD
Gracias.
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Ene 20, 2011 6:49 pm
por acanas
Jeje si ya lo probé porque me puse a pensar que me voy a ver en la misma situación así que hay que estar preparados.
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Ene 20, 2011 6:52 pm
por dcerick
Bueno lo dejé así:
Método
Código: Seleccionar todo
private void CambiarXmlEncoding(XmlDocument xmlDoc, string nuevoEncoding)
{
if (xmlDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
{
XmlDeclaration xmlDeclaration = (XmlDeclaration)xmlDoc.FirstChild;
xmlDeclaration.Encoding = nuevoEncoding;
}
}
Llamada
Código: Seleccionar todo
System.Xml.XmlDocument oDocument = new System.Xml.XmlDocument();
oDocument.Load(strRutaArchivoXml);
CambiarXmlEncoding(oDocument, "UTF-8");
oDocument.Save(strRutaArchivoXml);
Gracias por tu ayuda, al final es tu código con unas pocas modificaciones xD.
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Ene 20, 2011 7:12 pm
por acanas
Es todo, no problema dude.

Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Feb 17, 2011 4:59 pm
por dcerick
acanas escribió:Es todo, no problema dude.

Acanas buenas tardes oye man fijate que tengo otro detalle con la serializacion y pues queria ver si tu me das un norte....
Al serializar me está poniendo la fecha de esta forma "2011-01-31T17:59:53.922-07:00" , y pues me está sobrando ".922-07:00" puesto que el anexo 20 dice lo siguiente
"Atributo requerido para la expresión de la fecha y hora de expedición del comprobante fiscal. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.
"
Tu no tienes ese problema con la serialización? Y si te pasó como lo resolviste?
Saludos
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Feb 17, 2011 5:58 pm
por acanas
dcerick escribió:
Acanas buenas tardes oye man fijate que tengo otro detalle con la serializacion y pues queria ver si tu me das un norte....
Al serializar me está poniendo la fecha de esta forma "2011-01-31T17:59:53.922-07:00" , y pues me está sobrando ".922-07:00" puesto que el anexo 20 dice lo siguiente
"Atributo requerido para la expresión de la fecha y hora de expedición del comprobante fiscal. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.
"
Tu no tienes ese problema con la serialización? Y si te pasó como lo resolviste?
Saludos
si me tope con ese detalle cuando realizaba mis pruebas con el PAC, aqui te va el truco en c#:
Código: Seleccionar todo
string strFecha= XmlConvert.ToString(tfd.FechaTimbrado, "yyyy-MM-ddTHH:mm:ss");
Re: utf-8 en mayuscula o en minuscula
Publicado: Jue Feb 17, 2011 6:14 pm
por dcerick
acanas escribió:dcerick escribió:
Acanas buenas tardes oye man fijate que tengo otro detalle con la serializacion y pues queria ver si tu me das un norte....
Al serializar me está poniendo la fecha de esta forma "2011-01-31T17:59:53.922-07:00" , y pues me está sobrando ".922-07:00" puesto que el anexo 20 dice lo siguiente
"Atributo requerido para la expresión de la fecha y hora de expedición del comprobante fiscal. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.
"
Tu no tienes ese problema con la serialización? Y si te pasó como lo resolviste?
Saludos
si me tope con ese detalle cuando realizaba mis pruebas con el PAC, aqui te va el truco en c#:
string fechaString = XmlConvert.ToString(tfd.FechaTimbrado, "yyyy-MM-ddTHH:mm:ss");
Mi problema, en el atributo fecha del CFDI :
El del nodo del timbra fiscal digital no tengo problema.... sino que al momento de serializar la clase comprobante para calcular la cadena original y sacar el sello y esas cosas.... pues el campo fecha me lo pone en ese formato :S (2011-01-31T17:59:53.922-07:00).