Как мне перекодировать строку Javascript в ISO-8859-1?
Я пишу расширение Chrome, которое работает с веб-сайтом, который использует ISO-8859-1. Просто чтобы дать некоторый контекст, мое расширение делает публикацию на форумах сайта более быстрой, добавляя более удобную форму публикации. Значение текстовой области, в которую записывается сообщение, затем отправляется через 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";
Но это не похоже на работу.
РЕДАКТИРОВАТЬ:
Проблема на самом деле заключалась в том, как 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"
});
}