Два часто используемых метода устранения искаженных китайских символов AJAX
1. EncodeURI на стороне клиента (utf-8 делать не нужно, по умолчанию) и преобразовать кодировку iso-8859-1 в кодировку utf-8 на стороне сервера.
2. EncodeURI выполняется дважды на стороне клиента и один раз преобразуется на стороне сервера.
Причина, по которой второй метод может решить проблему:
После двух преобразований выполните первое декодирование в первом методе getparameter. Поскольку решение представлено на английском языке (результат после первого кодирования), во второй раз проблем не возникнет; используйте метод декодирования URLDecoder. Таким образом, эта проблема может возникнуть. решиться нормально. Следует отметить, что в методе декодирования необходимо указать формат декодирования как «utf-8». Многие китайские платформы не используют utf-8 (я думаю, это gb2312), поэтому преобразование декодирования по умолчанию не обязательно utf-8.
Причина, по которой клиент кодируется дважды, а декодируется только один раз на сервере, связана с Tomcat. Чтобы сделать программирование удобным для программистов (get и post используют один и тот же код), Tomcat автоматически декодирует кодировку сообщения, поэтому на стороне сервера на один рукописный оператор декодирования меньше. Причина, по которой нам нужно снова выполнить кодирование и декодирование, заключается в том, что операция автоматического декодирования Tomcat не обязательно декодируется в соответствии с желаемой кодировкой, но коды, декодированные для английских и других символов, одинаковы независимо от того, на какой платформе они находятся. поэтому Tomcat может автоматически интерпретировать результат первого кодирования, а затем вручную интерпретировать код encodeURI один раз, чтобы получить нужный вам формат.
Дополнение: Теперь я снова наблюдал за поведением браузера и чувствую, что это не вина Tomcat, потому что китайский язык, отображаемый в браузере, не является закодированным контентом. В настоящее время я не понимаю этих проблем с кодировкой, я надеюсь. знайте это. Друзья, обладающие знаниями в этой области, могут дать мне совет!
Решить проблему с кешем IE
Добавьте временную метку и хотите проверить?
Решение проблем с прокси
Хотите? Конвертировать в доллары
Пример кода:
Скопируйте код кода следующим образом:
функция проверки() {
//Метод 1 для решения проблемы искажения данных на китайском языке. Данные, отправленные со стороны страницы, кодируются как encodeURI, а сегмент сервера использует new String(old.getBytes("iso8859-1"),"UTF-8");
//Метод 2 для решения проблемы искажения китайского языка: данные, отправленные со стороны страницы, кодируются дважды, а сегмент сервера использует URLDecoder.decode(old, "UTF-8")
var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));
URL = ConvertURL (URL);
$.get(url, null, функция (данные) {
$("#result").html(данные);
});
}
//Добавляем временную метку к URL-адресу, чтобы обмануть браузер и не читать кеш
функция ConvertURL(URL) {
//Получаем временную метку
вар timstamp = (новая дата()).valueOf();
//Вставляем информацию о временной метке в URL-адрес
//url = "AJAXServer"
если (url.indexOf("?") >= 0) {
URL = URL + "&t=" + временная метка;
} еще {
URL = URL + "?t=" + временная метка;
}
обратный URL;
}