同じ ASP サイト内の gb2312 および utf-8 ページでのパラメータ送信の文字化けの問題を解決するには、次の 4 つの点に厳密に従うだけで済みます。
①. ページ ファイルに正しいエンコーディングを使用します。gb2312 は ANSI を使用し、utf-8 は utf-8 を使用します。
②.ASP コードに正しい CODEPAGE を設定します。gb2312 には 936、utf-8 には 65001 を使用します。
③.HTML コードに正しい文字セットを設定し、gb2312 には gb2312 を使用し、utf-8 には utf-8 を使用します。
④. 渡されたパラメータ値をjsのエスケープ関数を使用してエンコードします。
サンプルコード
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">
<頭>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>ページ(gb2312)-vevb.com</title>
</head>
<本文>
<script type="text/javascript">
document.write("<a href='t2.asp?keyword=" +escape("木子屋") + ''>木子屋</a>");
</script>
<br/>
<%
Response.Write(Request.QueryString("キーワード"))
%>
</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">
<頭>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ページ(utf-8)-vevb.com</title>
</head>
<本文>
<script type="text/javascript">
document.write("<a href='t1.asp?keyword=" +escape("木子屋") + ''>木子屋</a>");
</script>
<br/>
<%
Response.Write(Request.QueryString("キーワード"))
%>
</body>
</html>