2011-12-05 16 views
6

Tengo una aplicación web asp.net simple que está usando YUI para la solicitud de Ajax. La aplicación lee el texto del cuadro de texto y envía la solicitud AJAX al servidor. A continuación se muestra el códigoProblemas al enviar caracteres ® a través de la solicitud de AJAX

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input id="txt" name="txt" type="text" value="[Enter some value]" /> 
     <input id="btn" type="button" value="button" /> 
    </div> 
    <div id="out"></div> 
    </form> 
</body> 

siguiente es la secuencia de comandos de cliente que inicia la petición Ajax

YAHOO.util.Event.onDOMReady(function() { 
    YAHOO.util.Event.addListener("btn", "click", function(evt) { 
     var url = "Server.aspx?type=test&txt=" + document.getElementById("txt").value; 
     var btn = document.getElementById("out"); 
     var cObj = YAHOO.util.Connect.asyncRequest('GET', url, { 
      success: function(o) { 
       btn.innerHTML += "<div>" + o.responseText + " = " + o.responseText.charCodeAt(0) + "</div>"; 
      }, 
      failure: function(o) { 
       confirm("Its failure"); 
      }, 
      cache: false 
     }); 
    }); 
}); 

lo que hago en la aplicación es aceptar carácter introducido por el usuario, guardarlo en db y escribirla en respuesta Ajax . El sistema no es compatible con Unicode (base de datos).

Ahora mi problema es que cuando el carácter "Registrado" ® (0174) se ingresa en el cuadro de texto y se envía al servidor obtengo # 65533 que no es lo que el usuario ha ingresado en el cuadro de texto. También ® este personaje no es el carácter Unicode, entonces, ¿por qué este comportamiento?

+0

¿Qué codificación de caracteres usas? Notó que no es una de las codificaciones Unicode, pero no especificó qué * uso * usa. – Piskvor

+0

¿Te refieres a la codificación de contenido O al tipo de contenido de la solicitud de Ajax que se envía? –

+1

Probablemente haya muchas configuraciones diferentes de codificación involucradas, y todas ellas podrían ser importantes, p. Codificación DB, codificación de la página entregada al cliente, codificación cuando se trabaja en el lado del servidor. Por cierto, ¿su problema está realmente limitado al carácter "Registrado" solo, o hay otros personajes que también muestran este problema? – codeling

Respuesta

1

Deduciendo de las etiquetas que ha configurado, ¿el backend está programado en asp.net? Compruebe con qué codificación está trabajando allí (consulte, por ejemplo, here). Su problema suena muy parecido a que difiera de lo que entrega al cliente (consulte la configuración del servidor).

+0

Gracias por esto intenté agregar globalizatioin en web.config pero no funcionó para mí. ¿Alguna más información sobre esto? –

+0

Si entendí correctamente, la parte del servidor que responde a las solicitudes AJAX recibe el texto, lo coloca en la base de datos y lo envía de vuelta; el valor devuelto llega incorrectamente; pero ¿ha revisado los valores en el servidor, siguen siendo correctos? – codeling

+0

Tampoco ellos son incorrectos ... comprobé los valores en el servidor mientras la depuración y el tipo de contenido venían como application/x-www-form-urlencoded; utf-8; –

2

Olvídese de los problemas de configuración, probablemente su problema esté relacionado con su editor y la codificación del archivo que está utilizando para guardar sus archivos. No es suficiente configurar la codificación de caracteres, a veces ni siquiera importa, tienes que guardar los archivos en una codificación que admita el juego de caracteres, por ejemplo: utf-8 sin BOM, obtén un editor donde puedas ver esto información. Por supuesto, podría haber muchas cosas entre su servidor web, el servidor de la base de datos (suponiendo que esté utilizando uno) y el cliente. Verifique el carácter predeterminado en el servidor web, la base de datos y la codificación del archivo que está usando su editor para guardar los archivos.

Cuestiones relacionadas