Acabo de instalar Winamp Song Requester que es un complemento de solicitud de canción web Winamp con un servidor HTTP CGI mínimo incorporado.
Lo que hace el plugin es que ejecuta un servidor web, sirve una página html con algunas variables especiales que reemplaza con datos reales bajo petición (lista de reproducción, cola de solicitud, tiempo restante en la canción, etc.).
Vi esto como un proyecto divertido y bueno para aprender algo de jQuery, así que comencé a conectar mi propio código js para reemplazar, reparar y ajaxify el sitio web servido desde el complemento, pero ahora tuve un problema con la codificación de caracteres .
En la página obtienes enlaces a todas las canciones de la lista de reproducción. Cuando haces clic en uno de los enlaces, conecto mi propia función de jQuery click. Entonces, en lugar de volver a cargar toda la página cuando solicitas una canción, hago $ .get ($ (this) .attr ('href', function (response) {... code ...}) y luego uso replaceWith para reemplace la cola actual con la nueva cola generada con su solicitud agregada sobre la marcha. Hago lo mismo para mostrar/actualizar la reproducción actual y en la búsqueda para que todo sea recuperado en el fondo y luego reemplazado sobre la marcha con algunas animaciones agregadas.
todo jQuery/Ajax funciona muy bien pero el gran problema que tengo es con juego de caracteres y con nombres de canciones en cola/lista de reproducción. los caracteres especiales (åäöé etc.) de nombres no funciona en absoluto.
el plug-in muestra todo en iso-8859-1/latin1 y mi metaetiqueta en el marcado le dice al navegador que esta página es latin1. En una página normal, actualice en th El navegador funciona bien y los caracteres especiales se muestran de forma normal. Pero cuando uso jQuery y $ .get() para reemplazar bloques de código sobre la marcha, los caracteres especiales solo aparecen como?.
Creo que el problema radica en que jQuery predetermina creer que la respuesta $ .get() es UTF-8 si no hay encabezado que indique lo contrario. El complemento no establece ningún encabezado para la codificación/juego de caracteres en absoluto y ya que no tengo control en todo el backend y qué cabeceras se establecen no puedo cambiar esto.
Las únicas cabeceras que recibo de la respuesta del plugin es:
Servidor: WinampServer
Connection: close
Content-Type: text/html
espero que entienda mi problema. Tengo una página donde no tengo ningún control sobre el backend y todo lo que tengo que trabajar es HTML generado. No puedo cambiar ni agregar encabezados en las respuestas. Necesito decirle a jQuery que la respuesta está realmente en latin1 y no en UTF-8 para que la codificación de los caracteres especiales no se rompa. He probado el scriptCharset: 'iso-8859-1' en jQuerys ajaxSetup pero eso solo funciona con type script/json y estoy trabajando con respuestas HTML.
¿Alguna idea de si esto es posible o cualquier otra solución que pueda pensar?
Lo he intentado también, pero eso no parece ayudar. Creo que solo establece la codificación de los datos que envía, no la codificación de los datos recibidos en la respuesta. –
Creo que este nuevo método debería funcionar – Owen
Woah, muchas gracias. Eso funciona como un encanto. Estaba listo para darme por vencido y aceptar que no era posible resolver mi problema. Pasé mucho tiempo probando diferentes cosas y buscando una solución en Google. Su beforeSend funcionó muy bien cuando configuré el juego de caracteres en iso-8859-1. –