同じ 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 コードページ=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;
<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 コードページ=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;
<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>