Как остановить Server.HtmlEncode для кодирования символов UTF8? - PullRequest
3 голосов
/ 03 сентября 2011

Как я могу остановить 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 Ответ

3 голосов
/ 03 сентября 2011

Server.HtmlEncode метод экранирует >, <, &, "</strong> символов и любой символ кода ascii, код которого больше или равен 0x80.
Вы можете фильтровать какой персонаж будет экранирован.
В шаблоне будут закодированы общие символы.
Если вы предпочитаете, вы можете добавить и другие символы.

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>")
...