ASP y XML: Problema de codificacion (me urge)

26/11/2003 - 13:07 por Miguel González | Informe spam
A ver si alguien puede ayudarme, por favor:

Según la documentación, cuando proceso unos datos xml (docXML, por ejemplo) enviados con el método "xml", se codifican mediante UTF-8.

Esto me supone un problema al insertar los datos en una Base de Datos Access, ya que los acentos, eñes, etc. no se graban correctamente.

Hay alguna forma de decodificar el UTF-8 en el momento de grabar los datos???


Más o menos lo hago así:

Envio los datos desde una página mediante.

xmlhttp1.Send(docXML1.xml)

Recupero los datos en la otra página mediante:

docXML2.Load(Request)

Grabo los datos en la base de datos mediante un "INSERT INTO... VALUES(" & nodocampo.text & ")"

Donde nodocampo corresponde a un "Nodo hijo" del "Nodo registro"

Saludos!
Miguel

Preguntas similare

Leer las respuestas

#1 Fernando
26/11/2003 - 13:34 | Informe spam
Buenas
Tuve un problema parecido y lo resolvi usando CDATA en
aquellos nodos que pudieran contener acentos y tal
Espero que te valga

A ver si alguien puede ayudarme, por favor:

Según la documentación, cuando proceso unos datos xml


(docXML, por ejemplo) enviados con el método "xml", se
codifican mediante UTF-8.

Esto me supone un problema al insertar los datos en una


Base de Datos Access, ya que los acentos, eñes, etc. no se
graban correctamente.

Hay alguna forma de decodificar el UTF-8 en el momento de


grabar los datos???


Más o menos lo hago así:

Envio los datos desde una página mediante.

xmlhttp1.Send(docXML1.xml)

Recupero los datos en la otra página mediante:

docXML2.Load(Request)

Grabo los datos en la base de datos mediante un "INSERT


INTO... VALUES(" & nodocampo.text & ")"

Donde nodocampo corresponde a un "Nodo hijo" del "Nodo


registro"

Saludos!
Miguel
.

Respuesta Responder a este mensaje
#2 Jhonny Vargas P. [MVP]
26/11/2003 - 14:18 | Informe spam
Mmm... puedes hacer un replace() para cambiar algunos caracteres

pero independiente de eso... deberías utilizar otra codificación como por
ejemplo el ISO-8859-1


Saludos,
Jhonny Vargas P. [MS MVP]
Santiago de Chile


"Miguel González" wrote in message
news:
A ver si alguien puede ayudarme, por favor:

Según la documentación, cuando proceso unos datos xml (docXML, por ejemplo)
enviados con el método "xml", se codifican mediante UTF-8.

Esto me supone un problema al insertar los datos en una Base de Datos
Access, ya que los acentos, eñes, etc. no se graban correctamente.

Hay alguna forma de decodificar el UTF-8 en el momento de grabar los
datos???


Más o menos lo hago así:

Envio los datos desde una página mediante.

xmlhttp1.Send(docXML1.xml)

Recupero los datos en la otra página mediante:

docXML2.Load(Request)

Grabo los datos en la base de datos mediante un "INSERT INTO... VALUES(" &
nodocampo.text & ")"

Donde nodocampo corresponde a un "Nodo hijo" del "Nodo registro"

Saludos!
Miguel
Respuesta Responder a este mensaje
#3 Miguel González
26/11/2003 - 14:23 | Informe spam
Gracias Jhonny, pero el problema está en que el parser codifica a UTF-8, independientemente de la codificación que tu le envies. Claro el replace funcionaría, pero habría que "capturar" todos los posibles caracteres "díscolos"

Gracias
Miguel



"Jhonny Vargas P. [MVP]" escribió en el mensaje news:OPBOJ$
Mmm... puedes hacer un replace() para cambiar algunos caracteres

pero independiente de eso... deberías utilizar otra codificación como por
ejemplo el ISO-8859-1


Saludos,
Jhonny Vargas P. [MS MVP]
Santiago de Chile


"Miguel González" wrote in message
news:
A ver si alguien puede ayudarme, por favor:

Según la documentación, cuando proceso unos datos xml (docXML, por ejemplo)
enviados con el método "xml", se codifican mediante UTF-8.

Esto me supone un problema al insertar los datos en una Base de Datos
Access, ya que los acentos, eñes, etc. no se graban correctamente.

Hay alguna forma de decodificar el UTF-8 en el momento de grabar los
datos???


Más o menos lo hago así:

Envio los datos desde una página mediante.

xmlhttp1.Send(docXML1.xml)

Recupero los datos en la otra página mediante:

docXML2.Load(Request)

Grabo los datos en la base de datos mediante un "INSERT INTO... VALUES(" &
nodocampo.text & ")"

Donde nodocampo corresponde a un "Nodo hijo" del "Nodo registro"

Saludos!
Miguel


Respuesta Responder a este mensaje
#4 Patrick Espinosa
26/11/2003 - 15:55 | Informe spam
Que tal Miguel,

Nosotros utilizamos un componente COM registrado en el servidor,
luego instanciamos el objecto que realiza la conversión y lo utilizamos
para convertir el contenido del xml antes de insertarlo en la base de datos,
algo así como:

var cnv = new ActiveXObject("ConvCom.CConv");
xmlCalendario = cnv.Utf8ToAnsi(xmlCalendario);

si quieres, te envío el código en C++ para que lo compiles, el zip mide
55k con todo y la ayuda de cómo utilizarlo.

Saludos
Patrick.


"Miguel González" wrote in message
news:
A ver si alguien puede ayudarme, por favor:

Según la documentación, cuando proceso unos datos xml (docXML, por ejemplo)
enviados con el método "xml", se codifican mediante UTF-8.

Esto me supone un problema al insertar los datos en una Base de Datos
Access, ya que los acentos, eñes, etc. no se graban correctamente.

Hay alguna forma de decodificar el UTF-8 en el momento de grabar los
datos???


Más o menos lo hago así:

Envio los datos desde una página mediante.

xmlhttp1.Send(docXML1.xml)

Recupero los datos en la otra página mediante:

docXML2.Load(Request)

Grabo los datos en la base de datos mediante un "INSERT INTO... VALUES(" &
nodocampo.text & ")"

Donde nodocampo corresponde a un "Nodo hijo" del "Nodo registro"

Saludos!
Miguel
Respuesta Responder a este mensaje
#5 Miguel González
28/11/2003 - 11:50 | Informe spam
Gracias a todos por contestar.

El problema estriba en que la base de datos que utilizo (Access 97) no almacena correctamente los caracteres UTF-8/Unicode que le envia el componente msxml.

La solucion que he utilizado: una pequeña funcion en VB que decodifica los caracteres "díscolos" antes de grabar (sirve para los juegos de caracteres de 2 bytes).

He aquí la función:

Function decodifica(texto)
Dim i, textoOk
textoOk = ""
' Recorre la cadena de texto
For i = 1 To Len(texto)
' Comprueba que el caracter ocupe un byte (los inferiores a 127)
If Asc(Mid(texto, i, 1)) <= 127 Then
textoOk = textoOk & Mid(texto, i, 1)
Else
' Si es un caracter "díscolo" (de 2 Bytes)
' se salta el primer byte
i = i + 1
' y lo equilibra sumandole 64 (es el resultado del algoritmo UTF-8
' para juegos de caracteres de 2 bytes.
textoOK = textoOk & Chr(Asc(Mid(texto, i, 1))+64)
End If
Next
' devuelve el texto decodificado
decodifica = textoOk
End Function

Saludos!
Miguel

"Miguel González" escribió en el mensaje news:
A ver si alguien puede ayudarme, por favor:

Según la documentación, cuando proceso unos datos xml (docXML, por ejemplo) enviados con el método "xml", se codifican mediante UTF-8.

Esto me supone un problema al insertar los datos en una Base de Datos Access, ya que los acentos, eñes, etc. no se graban correctamente.

Hay alguna forma de decodificar el UTF-8 en el momento de grabar los datos???


Más o menos lo hago así:

Envio los datos desde una página mediante.

xmlhttp1.Send(docXML1.xml)

Recupero los datos en la otra página mediante:

docXML2.Load(Request)

Grabo los datos en la base de datos mediante un "INSERT INTO... VALUES(" & nodocampo.text & ")"

Donde nodocampo corresponde a un "Nodo hijo" del "Nodo registro"

Saludos!
Miguel
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida