Это не имеет ничего общего с тем, что '
является символом комментария. Это нормальный рабочий код:
Msgbox "'I love deadlines. I like the whooshing sound they make as they fly by.' Douglas Adams"
Ваш код приводит к ошибке, потому что некоторые символы необходимо экранировать, например <
, >
, &
и ваш печально известный '
. Чтобы правильно ввести строку выше в тег XML, вам нужно сделать это:
htmlEscaped = "'I love deadlines. I like the whooshing sound they make as they fly by.&apos Douglas Adams"
Здесь вы можете найти обзор набора наиболее распространенных символов, которые необходимо экранировать (хотя это не совсем так: если вы используете кодировку Unicode/UTF-8, некоторые символы будут нормально анализироваться).
К сожалению, в VBScript нет встроенной функции, экранирующей HTML, например, функции Escape
для URL-адресов. Только если вы находитесь на сервере ASP, вы можете использовать Server.HtmlEncode
, но это не ваш случай
Чтобы обобщить экранирование html (рассматривать все как особое, за исключением самых распространенных), вы можете использовать скрипт, например это:
Function HTMLEncode(ByVal sVal)
sReturn = ""
If ((TypeName(sVal)="String") And (Not IsNull(sVal)) And (sVal<>"")) Then
For i = 1 To Len(sVal)
ch = Mid(sVal, i, 1)
Set oRE = New RegExp : oRE.Pattern = "[ a-zA-Z0-9]"
If (Not oRE.Test(ch)) Then
ch = "&#" & Asc(ch) & ";"
End If
sReturn = sReturn & ch
Set oRE = Nothing
Next
End If
HTMLEncode = sReturn
End Function
Его можно немного улучшить (вы заметите, что передача объектов в эту функцию приведет к ошибке) и сделать его более конкретным: регулярное выражение может соответствовать большему количеству символов. Я также не знаю его производительности, регулярные выражения могут быть медленными при неправильном использовании, но это доказывается в качестве примера.
person
AutomatedChaos
schedule
13.03.2014