代码如下,保存为utf-8格式。 非中文系统比如输入:哈亚马 输出为: -------------- 哈亚马 哈?? -------------- 也就是设置到cookie,然后再读出来就变问号了。 利用软件检测,发现Response的header里面那两个字就已经是问号了。 --------------------------------------- HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Tue, 11 Apr 2006 06:57:25 GMT X-Powered-By: ASP.NET Content-Length: 203 Content-Type: text/html; Charset=utf-8 Set-Cookie: Huibo=username=%99%FB%3F%3F; expires=Sun, 30-Apr-2006 15:00:00 GMT; path=/work Cache-control: private --------------------------------------------------- %3F就是问号。
看来问题只能出在 response.Cookies("Huibo")("username")=.... 这句了。 只能是他的内部进行了转码处理,致使出现问号。
类似的还有Server.MapPath()等方法, 还有Server.URLEncode()出来的地址取不到文件。为啥呢?
<%@codepage=65001%> <%Response.charset="utf-8"%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form method="post"> <input type="text" name="username"> <input type="submit" name="" value="GO"> </form>
<% if request.form("username")<>"" then response.Cookies("Huibo")("username")=trim(request.form("username")) response.Cookies("Huibo").Expires="2006/05/01" Response.write trim(request.form("username")) &"<br>" Response.write trim(request.Cookies("Huibo")("username")) end if
'编码程序: function CodeCookie(str) Dim i Dim strRtn for i=len(str) to 1 step -1 strRtn=strRtn & ascw(mid(str,i,1)) if i<>1 then strRtn=strRtn & "a" '用a作分隔符 end if next CodeCookie=strRtn end function
'解码程序: function DecodeCookie(str) Dim i Dim strArr,strRtn strArr=Split(str,"a") for i=UBound(strArr)-LBound(strArr) to 1 step -1 strRtn=strRtn & chrw(strArr(i)) next DecodeCookie=strRtn end function %>
|