Я пишу расширение Chrome, которое работает с веб-сайтом, который использует ISO-8859-1. Чтобы дать некоторый контекст, то, что мое расширение делает, делает публикацию на форумах сайта быстрее, добавляя более удобную форму сообщения. Затем значение textarea, где написано сообщение, отправляется через вызов Ajax (с использованием jQuery).Как перекодировать строку Javascript в ISO-8859-1?
Если сообщение содержит такие символы, как á
, эти символы отображаются в сообщении á в опубликованном сообщении. Принудительное отображение браузера 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"
});
}
Как вы отправляете сообщение (например, полный пример отказа от кода AJAX)? –