Чтобы решить проблему искаженной передачи параметров на страницах gb2312 и utf-8 на одном сайте ASP, вам нужно всего лишь строго следовать следующим четырем пунктам.
① Используйте правильную кодировку для файла подкачки: gb2312 использует ANSI, а utf-8 использует utf-8;
②. Установите правильную КОДОВУЮ СТРАНИЦУ в коде ASP, используйте 936 для gb2312 и 65001 для utf-8;
③.Установите правильную кодировку в HTML-коде, используйте gb2312 для gb2312 и используйте utf-8 для utf-8;
④ Закодируйте переданное значение параметра, используя escape-функцию 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>
</голова>
<тело>
<тип сценария="текст/javascript">
document.write("<a href='t2.asp?keyword=" + escape("木子屋") + "'>木子屋</a>");
</скрипт>
<br/>
<%
Response.Write(Request.QueryString("ключевое слово"))
%>
</тело>
</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>
</голова>
<тело>
<тип сценария="текст/javascript">
document.write("<a href='t1.asp?keyword=" + escape("木子屋") + "'>木子屋</a>");
</скрипт>
<br/>
<%
Response.Write(Request.QueryString("ключевое слово"))
%>
</тело>
</html>