asp中response.write("中文")或者js中文亂碼問題
我的所有網頁編碼是utf-8,當打開瀏覽器不對數據庫插入數據時(main.asp),直接讀取數據進行瀏覽(showAll.asp),一切正常;但是當在main.asp通過ajax把數據插入到access表時,再去瀏覽showAll.asp頁面時,凡是Response.Write("中文")語句中的內容都是亂碼,即使showAll.asp頁面不包含從數據庫來的數據,也是一樣全部是亂碼。當把瀏覽后的網頁源碼用筆記本編輯時,發現他的編碼變成了ANSI。
所以只需要在showAll.asp頁面的前面加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
<%Session.CodePage=65001%>即可解決問題。
如果您的網頁是基于UTF-8編碼的,請在代碼第一行加入:
<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%>
如果您的網頁是基于GB2312編碼的,請在代碼第一行加入:
<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
注:我就是通過此方法解決了ASP亂碼的.這里大家要注意點2點
1.<%@LANGUAGE="VBSCRIPT"CODEPAGE="65001"%> 這行代碼一定要放到頁面的第一行
這是重點:
2.<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>和<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>和<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
response.write 輸出 utf-8的方法
為了適應xmlhttp控件的需要,這個控件只有在獲得utf-8編碼的網頁內容的時候,responseText才能得到正確輸出,試了各種方法,甚至在asp服務器上用adodb.steam來轉碼,后來看到一篇文章,只要在asp中加入以下代碼即可,一試,果然成功!只是不清楚為什么。
Response.ContentType="text/html"
Response.AddHeader"Content-Type","text/html;charset=UTF-8"
Response.CodePage=65001
Response.CharSet="UTF-8"
Response.BinaryWrite(chrb(239))
Response.BinaryWrite(chrb(187))
Response.BinaryWrite(chrb(191))
接下來用 response.write 直接輸出內容即可,客戶端將得到以utf-8編碼的內容
response.write 輸出亂碼的解決方法
在很多時候,我們都會不太注意一些細節的問題,
例如在asp的開發過程中,最讓人頭痛的就是網頁的解碼問題
我現在開發的都是一些繁體中文的網站,而且公司規定要用utf-8這個國際解碼,
于是解碼問題就會整體纏著你不放了··
我們不要看小<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
這句代碼,因為這句代碼是很有用的,特別是在解碼方面,比如很多人在使用response.write這個方法輸出中文字符串的時候會出現亂碼,并且不管你怎樣添加response.charset="utf-8" 、session.codepage=65001都無補于事,于是我們就需要<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
當然response.charset="utf-8" 、session.codepage=65001這兩句也不能少;
但是雖然asp代碼所需要的條件都齊全了,但是我們不要忘了網頁本身需要的條件;
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
這個HTML網頁所需要的解碼設定的條件;當然,這是asp代碼和html代碼混合的文件所需要的;
如果是純asp代碼的asp文件可以不要;
再一個就是文件本身還得必須是utf-8的解碼;
如果這個大家不知道在哪里看的話;大家可以用記事本打開的asp文件;另存為,如果編碼是ANSI的話,將其改為utf-8即可,
這些條件都滿足了之后,我想就應該不會出現亂碼了;
相關文章: