中的 MS ScriptManager 的 RegisterStartUpScript
方法将 SQLServer 异常的输出传递给客户端。NET 3.5.对于某些错误,这种方法可以很好地工作,但是当异常包含单引号时,警报就会失败。
但是我不想仅仅逃避单引号。有没有一个标准的函数我可以调用转义任何特殊的字符在 JavaScript 中使用?
string scriptstring = "alert('" + ex.Message + "');";
ScriptManager.RegisterStartupScript(this, this.GetType(), "Alert", scriptstring , true);
编辑:
谢谢@tpeczek,代码 差不多对我来说很有用:)但是稍加修改(单引号的转义)就很有用了。
我在这里加入了我的修正版本。
public class JSEncode
{
/// <summary>
/// Encodes a string to be represented as a string literal. The format
/// is essentially a JSON string.
///
/// The string returned includes outer quotes
/// Example Output: "Hello \"Rick\"!\r\nRock on"
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string EncodeJsString(string s)
{
StringBuilder sb = new StringBuilder();
sb.Append("\"");
foreach (char c in s)
{
switch (c)
{
case '\'':
sb.Append("\\\'");
break;
case '\"':
sb.Append("\\\"");
break;
case '\\':
sb.Append("\\\\");
break;
case '\b':
sb.Append("\\b");
break;
case '\f':
sb.Append("\\f");
break;
case '\n':
sb.Append("\\n");
break;
case '\r':
sb.Append("\\r");
break;
case '\t':
sb.Append("\\t");
break;
default:
int i = (int)c;
if (i < 32 || i > 127)
{
sb.AppendFormat("\\u{0:X04}", i);
}
else
{
sb.Append(c);
}
break;
}
}
sb.Append("\"");
return sb.ToString();
}
}
如下所述-原始来源: 给你