我自己的页面用的是UTF-8编码。但是问题是在这个页面下,其中有一段变量要用到md5加密后传出,对方用的是gb2312的编码,此md5处理带有中文的变量,则加密结果和对方用此变量的加密结果不同。其原因在于变量传出去时是UTF-8的内码,对方收到后用gb2312解释。因此要解决这个问题,一定要在加密前把变量转为gb2312的编码。
网上找了N多的方法,包括用各种utf2gb的函数。。均为无效或差强人意,有的虽然编码加密成功了,但传到对方显示出来是组乱码。
正当山穷水尽之际,突然发现可以在同一个页面中进行代码编码方式的切换。这样可以保证整个网站页面编码不变的情况下,对页面中的某一个变量或部分代码段使用不同的的编码方式:
如下页面:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.CodePage=65001
Response.Charset="UTF-8"
%>
<!--#include file="md5.asp"-->
<%
DIM A : A="中文"
Dim B
Response.write(A&"<br>")
B=md5(A)
Response.write(B&"<br>")
' 开始改变编码方式
response.codepage=936
response.charset="GBK"
Response.write(A&"<br>")
B=md5(A)
Response.write(B&"<br>")
'恢复编码方式
response.codepage=65001
response.charset="utf-8"
Response.write(A&"<br>")
B=md5(A)
Response.write(B&"<br>")
%>
运行结果如下: 其中的乱码其实是gb2312的编码在utf-8页面下显示的内容,如果接收方是gb2312,则可以正确显示。
中文
249ba6277758050695e8f5909bacd6d3
????
f3b679619b195beba139fcbb4b486630
中文
249ba6277758050695e8f5909bacd6d3
另外:jquery一般只是在"utf-8"下正常。