Ответ 1
Я понимаю, что Javascript использует UTF-8 для своих строк
Нет, нет.
Каждая страница имеет свою кодировку, определенную в метатеге, чуть ниже head
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
или
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
Кроме того, каждая страница должна быть отредактирована с кодировкой целевой кодировки. В противном случае он не будет работать должным образом.
И это хорошая идея, чтобы определить его целевую кодировку кодировки на стороне сервера.
Java
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
PHP
header("Content-Type: text/html; charset=UTF-8");
C#
I do not know how to...
И может быть хорошей идеей настроить каждый файл script, использует ли он чувствительные символы (á, é, í, ó, ú и т.д.).
<script type="text/javascript" charset="UTF-8" src="/PATH/TO/FILE.js"></script>
...
Итак, это моя теория, что если я перекодирую строку в ISO-8859-1 перед ее отправкой, она должна решить мою проблему
Нет, нет.
Целевой сервер может обрабатывать строки, отличные от ISO-8859-1. Например, Tomcat обрабатывает ISO-8859-1, независимо от того, как вы настроили свою страницу. Таким образом, на стороне сервера вам может понадобиться настроить свой запрос в соответствии с настройкой вашей страницы.
Java
request.setCharacterEncoding("UTF-8")
PHP
// I do not know how to...
Если вы действительно хотите перевести кодировку целевого кодирования, TRY следующим образом
InternetExplorer
formElement.encoding = "application/x-www-form-urlencoded; charset=ISO-8859-1";
ELSE
formElement.enctype = "application/x-www-form-urlencoded; charset=ISO-8859-1";
Или вы должны предоставить функцию, которая получает числовое представление в Unicode Character Set, используемое каждым символом. Он будет работать независимо от кодировки целевой кодировки. Например, как набор символов Юникода -\u00E1;
alert("á without its Unicode Character Set numerical representation");
function convertToUnicodeCharacterSet(value) {
if(value == "á")
return "\u00E1";
}
alert("á Numerical representation in Unicode Character Set is: " + convertToUnicodeCharacterSet("á"));
Здесь вы можете увидеть в действии:
Вы можете использовать эту ссылку в качестве ориентира (см. JavaScript-экраны)
Добавлен исходный ответ, как я реализую jQuery funcionality
var dataArray = $(formElement).serializeArray();
var queryString = "";
for(var i = 0; i < dataArray.length; i++) {
queryString += "&" + dataArray[i]["name"] + "+" + encodeURIComponent(dataArray[i]["value"]);
}
$.ajax({
url:"url.htm",
data:dataString,
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
success:function(response) {
// proccess response
});
});
Он отлично работает без головной боли.
Привет,