如何阻止Server.HtmlEncode编码UTF8字符?

时间:2011-09-03 13:09:53

标签: encoding utf-8 asp-classic html-encode

如何阻止Server.HtmlEncode对UTF8字符进行编码?我将代码页设置为UTF8但没有帮助

这是我的测试用例:

<%@CODEPAGE=65001%>
<%
Response.CodePage = 65001
Response.CharSet = "utf-8"
%>
<%=Server.HtmlEncode("русский stuff <b>bold stuff</b>")%>

通常应该输出:

русский stuff &lt;b&gt;bold stuff&lt;/b&gt;

但输出是:

&#1088;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081; stuff &lt;b&gt;bold stuff&lt;/b&gt;

1 个答案:

答案 0 :(得分:3)

Server.HtmlEncode方法转义&gt;,&lt;,&amp;,“字符以及代码大于或等于0x80的任何ascii代码字符。
您可以过滤哪个角色将被逃脱。
通用字符将以模式编码 如果您愿意,也可以添加其他字符。

Private Function cb_Escape(ByVal a, ByVal b, ByVal c, ByVal d)
    cb_Escape = Server.HTMLEncode(b)
End Function

Private Function HTMLEncode2(ByVal sHTML)
    Dim oReg
    Set oReg = New RegExp
        oReg.Global = True
        oReg.Pattern = "([<>""&]+)"
        HTMLEncode2 = oReg.Replace(sHTML, GetRef("cb_Escape"))
    Set oReg = Nothing
End Function

Response.Write HTMLEncode2("русский stuff <b>bold stuff</b>")