Функция 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
Другие вопросы по тегам