1

考慮以下簡單的ASP頁面 - 一個文本輸入的表單和一個提交按鈕:ajaxSubmit會導致不正確的字符解碼

<% 
    response.write(Request.Form("test") & "<br/>") 
%> 

<script type="text/javascript" src="jquery-1.9.1.min.js"></script> 
<script type="text/javascript" src="jquery.form.js"></script> 

<form action="test.asp" method="post" id="form" name="form" accept-charset="ISO-8859-1"> 
    <input type="text" name="test" /> 
    <input type="submit" id="sub" /> 
</form> 

<script type="text/javascript" /> 
    $('#form').submit(function() { 
     $('#form').ajaxSubmit({ 
      success : function(responseText){ 

      }, 
      error : function(){ 
      } 
     }); 

     return false; 
    }); 
</script> 

利用價值®

如果我提交表單沒有 AJAX(不使用底部腳本塊),該響應是®。數據被編碼爲test=%AE

如果我通過 ajax提交表格(使用底部腳本塊),響應爲®。數據被編碼爲test=%C2%AE

由於%C2%AE®的有效編碼,這是一個vbscript問題嗎?

回答

1

如果我提交沒有ajax的表單(不使用底部腳本塊),響應是®。數據被編碼爲test =%AE。

這是因爲accept-charset="ISO-8859-1"ajaxSubmit,在另一方面,總是使用UTF-8,忽略任何accept-charset。 (這可能是因爲對AJAX的限制意味着在某些情況下任何其他編碼都會中斷)。

我建議刪除accept-charset屬性(在IE中它不會像它應該那樣工作)並將頁面explicitly作爲UTF-8提供。這應該擺脫®問題。

+0

是啊,我開始寫這個問題之前,我想通了,在ajaxSubmit會以UTF-8編碼它,我做後,並沒有改寫的問題是「爲什麼ASP解碼UTF-8字符串作爲ACII?」昨天,我不能爲我的生命得到它解碼,作爲一個字符,而不是兩個(設置頁面編碼等) - 今天上午,我不能爲我的生命得到它重現行爲我昨天看到 - 其解碼正確,即使我設置頁面編碼和接收字符集是ISO-8859-1。在相關說明中,我討厭維護傳統的經典ASP cruft:P – Turch

相關問題