ASP同一站点下gb2312和utf-8页面传递参数乱码的终极解决方法

  ①.页面文件使用正确的编码,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)-glzy8.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)-glzy8.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>