轉自:葉子部落格 http://www.cnal.com.cn/blog/
NetBox環境下ajax用get擷取資料中文亂碼的解決
2007-1-31 10:20:39
[gyct]給客戶開發的一個web系統,本來計劃是在IIS下運行,無奈客戶那邊的電腦作業系統IIS無論怎樣都安裝不了,總不能要求客戶為了這個web系統重新安裝作業系統吧?所以想到了NetBox。
開發的時候都是在IIS下進行調試,然後用NetBox運行,基本上一切正常,客戶使用了一段時間後,提出增加一個新的功能,於是用ajax增加了一個新功能,NetBox下運行出錯,
錯誤提示:
執行階段錯誤 '800a01b6'
對象不支援此屬性或方法: 'Response.CharSet'
---------------------------------------------------------------------
(百度一下,還有很多人遇到同樣的錯誤)
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Response.Charset'
檢查出錯代碼:
Response.CharSet = "GB2312"
這行代碼主要是為瞭解決ajax用get獲得資料時,中文亂碼的問題。
刪除這行代碼後netbox正常運行,但是ajax返回的中文資料成了亂碼。
說明 NetBox不支援 Response.CharSet 。
開啟netbox的使用手冊,依次展開:
對象參考 → Response 對象 → Response 方法
AddHeader 方法
AddHeader 方法用指定的值添加 HTML 標題。該方法常常向響應添加新的 HTTP 標題
文法
Response.AddHeader name, value
參數
name
新的標題變數的名稱
value
儲存在新的標題變數中的初始值
注釋
為避免命名不明確,name 中不能包含任何底線 (_)。ServerVariables 集合將標題中的底線解釋為反斜線。例如,下面的指令碼使伺服器尋找一個名為 MY-HEADER 的標題名。
<% Request.ServerVariables("HTTP_MY_HEADER") %>
樣本
下面這個樣本使用 AddHeader 方法要求用戶端使用 BASIC 驗證。
<% Response.Addheader "WWW-Authenticate", "BASIC" %>
注意 前面的指令碼僅通知用戶端瀏覽器使用哪個驗證。若您在 Web 應用程式中使用該指令碼,則一定要啟用 Web 伺服器的 BASIC 驗證。
於是將
Response.CharSet = "GB2312"
替換成:
Response.Addheader "Content-Type","text/html; charset=gb2312"
NetBox環境下ajax用get擷取資料,中文亂碼的問題解決!
-----------------------------------------------------------------------------------
附:
理論上來說,如果整站都使用 utf-8 來開發,亂碼問題也可以解決。但是我一般寫asp程式都是用 gb2312 編碼,utf-8 就沒測試了。