要解決ASP同一網站下gb2312和utf-8頁面傳遞參數亂碼問題,只要嚴格做到以下4點即可。 ①.頁面檔案使用正確的編碼,gb2312使用ANSI,utf-8使用utf-8;
②.ASP程式碼中設定正確的CODEPAGE,gb2312使用936,utf-8使用65001;
③.HTML程式碼中設定正確的charset,gb2312使用gb2312,utf-8使用utf-8;
④.將傳遞的參數值使用js的escape函數進行編碼;
範例程式碼
t1.asp(ANSI編碼):
複製代碼代碼如下:
<%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
<%Session.CodePage=936%>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=gb2312 />
<title>Page(gb2312)-vevb.com</title>
</head>
<body>
<script type=text/javascript>
document.write(<a href='t2.asp?keyword= + escape(木子屋) + '>木子屋</a>);
</script>
<br/>
<%
Response.Write(Request.QueryString(keyword))
%>
</body>
</html>
t2.asp(utf-8編碼):
複製代碼代碼如下:
<%@LANGUAGE=VBSCRIPT CODEPAGE=65001%>
<%Session.CodePage=65001%>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Page(utf-8)-vevb.com</title>
</head>
<body>
<script type=text/javascript>
document.write(<a href='t1.asp?keyword= + escape(木子屋) + '>木子屋</a>);
</script>
<br/>
<%
Response.Write(Request.QueryString(keyword))
%>
</body>
</html>