Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/10/2007, 16:09
dblanco
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
UTF8 y el objeto Microsoft.XMLDOM

amiguetes, llevo días buscando varias formas de crear un XML con un texto, que luego quiero recuperar desde ASP.

El texto es UTF-8 y puede tener toda clase de caracteres. Tengo experiencias más o menos satisfactorias con el objeto "MSXML2.XMLHTTP", aunque no sé porque sólo me funciona con "GET".

Pero el caso es que quería finalmente utilizar Microsoft.XMLDOM y he creado un codigo limpio y sencillo el cual problema "casi" perfectamente.

leeXML.asp

Código:
<%Response.Charset = "utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>TAGleado | Tag Search Engine</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<head><body>

<%
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
strFile = Server.MapPath("datos.xml")
objXML.Load (strFile)


Set language = objXML.selectNodes("//language")

For i = 0 to (language.Length - 1) 
	Response.Write("language: " & language(i).GetAttribute("id") & "<br>" & vbcrlf)

	Set menu_images = language(i).selectNodes("menu_images")
	response.write (menu_images(0).text & "<br>" & vbcrlf)
   	Set sel = language(i).selectNodes("sel")
	Set s = sel(0).selectNodes("s")
   	For j = 0 to (s.Length-1)
    	  response.Write(s(j).text & "<br>" & vbcrlf)
   	Next
   	Set sel = nothing
	Set s = nothing
Next

Set language = nothing
%>

</body></html>
datos.xml

Código:
<?xml version="1.0" encoding="UTF-8"?>
<mixml>
   <language id="test">
        <menu_images>مملكة البحرين</menu_images>
        <sel>
			<s>opción 1</s>
			<s>opción 2</s>
			<s>opción 3</s>
			<s>opción 4</s>
        </sel>

	</language>
</mixml>
además ambos archivos están codificados UTF-8, y en el ASP, si inserto cualquier caracter UTF-8 lo muestra en pantalla bien, no así lo que recupera del XML. Osea que es el proceso de recuperación de datos del objeto Microsoft.XMLDOM donde pierde la codificación.

La pregunta es, ¿cómo logro recuperar los datos en su formato original?

gracias


PD. Aprovecho para decir que acabo de verificar que en JavaScript funciona perfectamente, lo que pasa es que yo preferiría hacerlo desde ASP y weno que también me fastidia cuando sale un error complicadillo como este. Solución tiene que haber porque sino no podrían utilizar este objeto por ejemplo los que utilizan alfabeto cirílico o árabe, etc.

Última edición por dblanco; 23/10/2007 a las 17:44