Я пишу расширение Chrome, которое работает с веб-сайтом, который использует ISO-8859-1. Чтобы дать некоторый контекст, то, что делает мое расширение, делает размещение на форумах сайта быстрее, добавляя более удобную форму сообщения. Значение textarea, где записывается сообщение, затем отправляется через вызов Ajax (используя jQuery).
Если сообщение содержит символы типа á
, эти символы отображаются в сообщении á в опубликованном сообщении. Принудительное отображение браузера UTF-8 вместо ISO-8859-1 приводит к правильному отображению á
.
Я понимаю, что Javascript использует UTF-8 для своих строк, поэтому моя теория заключается в том, что если я перекодирую строку в ISO-8859-1 перед ее отправкой, она должна решить мою проблему. Однако, похоже, нет прямого способа сделать это перекодирование в Javascript, и я не могу коснуться кода на стороне сервера. Любые советы?
Я попытался установить созданную форму для использования iso-8859-1 следующим образом:
var form = document.createElement("form");
form.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
А также:
var form = document.createElement("form");
form.encoding = "ISO-8859-1";
Но это не работает.
EDIT:
Проблема на самом деле заключалась в том, как jQuery был urlencoding сообщения (или что-то в пути), я исправил это, сообщив jQuery не обрабатывать данные и делать это сам, как показано в следующем фрагменте:
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"
});
}