Sto scrivendo un'estensione per Chrome che funziona con un sito Web che utilizza ISO-8859-1. Solo per dare un contesto, quello che la mia estensione fa è rendere più veloce la pubblicazione nei forum del sito aggiungendo un modulo di post più conveniente. Il valore della textarea in cui viene scritto il messaggio viene quindi inviato tramite una chiamata Ajax (utilizzando jQuery).Come si transcodifica una stringa Javascript in ISO-8859-1?
Se il messaggio contiene caratteri come á
questi caratteri appaiono come à nel messaggio postato. Forzando il browser per visualizzare UTF-8 anziché ISO-8859-1, l'á
viene visualizzato correttamente.
È a mia conoscenza che Javascript utilizza UTF-8 per le sue stringhe, quindi è la mia teoria che se devo transcodificare la stringa in ISO-8859-1 prima di inviarla, dovrebbe risolvere il mio problema. Tuttavia non sembra esserci alcun modo diretto per eseguire questa transcodifica in Javascript e non posso toccare il codice lato server. Qualche consiglio?
Ho provato a fissare la forma creata da usare iso-8859-1 come questo:
var form = document.createElement("form");
form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
E anche:
var form = document.createElement("form");
form.encoding = "ISO-8859-1";
ma questo non sembra funzionare.
EDIT:
Il problema in realtà mentito nel modo in cui jQuery è stato urlencoding il messaggio (o qualcosa lungo la strada), Ho fissato questo dicendo jQuery non elaborare i dati e fare io stesso, come è mostrato nella seguente frammento:
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"
});
}
Come si invia il messaggio (ad esempio un esempio completo di errore del codice AJAX)? –