IIS7下的ASP页面,改为Utf-8编码后,Html部分的中文显示正常,但是由 Response.Write 输出的中文字符,在不特定的时间会变成乱码,一开始以为是浏览器问题,测试了多个浏览器故障依旧不定时出现:
<%@ language="VBScript" CODEPAGE="65001" %>
<% Option Explicit %>
<%Response.Charset="UTF-8"
%>
必须关闭浏览器重新打开网站才会恢复正常。
后来想起 Nosql.asp 文件内的提示文字未使用中文,全部使用的是 &#数字; 这样的 UNiCode 形式来表示中文字符。受此启发,于是有了以下函数,改装 Response.Write ,自动检测是否有Ascii值大于255的字符,有的话,则全部转换为&#;形式再输出:
Public Function zh2html(s)Dim i, r, c, tFor i = 1 To Len(s)t = Mid(s, i, 1)c = AscW(t)If c < 0 Then c = c + 65536If c > 255 Thenr = r & "&#" & c & ";"Elser = r & tEnd IfNextzh2html = r
End Functionsub RW(s):Response.Write zh2html(s):end sub
从此再也没有出现过乱码了。