Функция JQuery $.post() отправляет неправильную кодировку
У меня проблема с этой функцией в частности:
$.post('classes/processPage.asp', {
param1: $('#hdnValue').val()
}
Когда я проверяю это значение на processPage, оно выдает мне неправильные символы.
Я пытался включить это:
$.ajaxSetup({contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1"});
Но это не сработало.
Для информации кодирование файлов (классические страницы ASP) - ANSI, но я также попробовал UTF-8.
У меня есть этот метатег, включенный в первую страницу:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
И этот код в процессе страницы:
Response.Charset = "ISO-8859-1"
Что мне не хватает?
1 ответ
Я видел это на странице jQuery:
"При отправке данных на сервер используйте этот тип контента. По умолчанию это"application/x-www-form-urlencoded", что подходит для большинства случаев. Если вы явно передаете тип контента в $.ajax() тогда он всегда будет отправляться на сервер (даже если данные не отправляются). Данные всегда будут передаваться на сервер с использованием кодировки UTF-8; вы должны соответствующим образом декодировать это на стороне сервера "
Поэтому я расшифровал строку на стороне сервера, используя эту функцию:
'DecodeUTF8
' Decodes a UTF-8 string to the Windows character set
' Non-convertable characters are replace by an upside
' down question mark.
'Returns:
' A Windows string
function DecodeUTF8(s)
dim i
dim c
dim n
i = 1
do while i <= len(s)
c = asc(mid(s,i,1))
if c and &H80 then
n = 1
do while i + n < len(s)
if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then
exit do
end if
n = n + 1
loop
if n = 2 and ((c and &HE0) = &HC0) then
c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
else
c = 191
end if
s = left(s,i-1) + chr(c) + mid(s,i+n)
end if
i = i + 1
loop
DecodeUTF8 = s
end function