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

#6 Jhonny Vargas P. [MVP]
28/11/2003 - 13:36 | Informe spam
A que bien y gracias por señalar como lo solucionaste!!!


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

"Miguel González" wrote in message
news:
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
#7 Manuel Etcheto
28/11/2003 - 15:16 | Informe spam
Hola Miguel
podrías probar, al comienzo de la página que envía la data
Response.charset="ISO-8859-1"

Digo, probar para tratar de evitar (si se pudiere) la
concatenación de cadenas en vb...
Suerte
Manuel


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
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida