Вы говорите: «XMLHttpRequest перед отправкой всегда изменяет данные в UTF-8».
ЭТО НЕПРАВИЛЬНО !!!XMLHttpRequest должен быть закодирован перед отправкой, кодировка определяется документом self.
для html5, вы можете использовать <meta charset="YOUR-ENCODING-HERE">
.для html или xhtml вы должны использовать <meta http-equiv="Content-Type" content="text/html; charset=YOUR-ENCODING-HERE-WITHOUT-QUOTES">
.для xml вы можете использовать <?xml version="1.0" encoding="YOUR-ENCODING-HERE"?>
.
, затем, перед XMLHttpRequest.send (), вы должны XMLHttpRequest.setRequestHeader("Content-type","SOME-OTHER-DECLARATION; charset=YOUR-ENCODING-HERE-WITHOUT-QUOTES");
.
Учитывая все вышесказанное, независимо от того, какая кодировка вашего сервера по умолчанию предполагает, он будет использовать кодировку, которую предлагает запрос (если он поддерживает), для декодирования URI.
Существует другой способ сделать это.
Я не знаю, какой язык программирования используется на вашей стороне сервера.Для Java вы можете использовать, скажем, str
- это строка, полученная сервером, newStr = new String(str.getBytes("SERVER-ASSUMED-CHAR-ENCODING"), "YOUR-HTML-ENCODING");
В вашем случае это будет newStr = new String(str.getBytes("windows-1251"), "UTF-8");
.И newStr должен быть читаемыми данными.