Estoy escribiendo una extensión de Chrome que funciona con un sitio web que usa ISO-8859-1. Solo para dar un contexto, lo que hace mi extensión es hacer que la publicación en los foros del sitio sea más rápida al agregar un formulario de publicación más conveniente. El valor del área de texto donde se escribe el mensaje se envía a través de una llamada Ajax (usando jQuery).¿Cómo puedo transcodificar una cadena de Javascript a ISO-8859-1?
Si el mensaje contiene caracteres como á
, estos caracteres aparecen como á en el mensaje publicado. Obligar al navegador a mostrar UTF-8 en lugar de ISO-8859-1 hace que el á
aparezca correctamente.
Tengo entendido que Javascript usa UTF-8 para sus cadenas, por lo que mi teoría es que si transduzco la cadena a ISO-8859-1 antes de enviarla, debería resolver mi problema. Sin embargo, parece que no hay una forma directa de hacer esta transcodificación en Javascript, y no puedo tocar el código del lado del servidor. ¿Algún consejo?
He tratado de establecer la forma creada para usar iso-8859-1 así:
var form = document.createElement("form");
form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
Y también:
var form = document.createElement("form");
form.encoding = "ISO-8859-1";
Pero eso no parece funcionar.
EDIT:
El problema en realidad mintió en la forma en jQuery se URLEncoding el mensaje (o algo por el camino), me fijo esto diciéndole jQuery no para procesar los datos y hacerlo yo mismo, como se muestra en la siguiente fragmento:
function cfaqs_post_message(msg) {
var url = cfaqs_build_post_url();
msg = escape(msg).replace(/\+/g, "%2B");
$.ajax({
type: "POST",
url: url,
processData: false,
data: "message=" + msg + "&post=Preview Message",
success: function(html) {
// ...
},
dataType: "html",
contentType: "application/x-www-form-urlencoded"
});
}
¿Cómo está enviando el mensaje (por ejemplo, un ejemplo completo de un error en el código AJAX)? –