【发布时间】:2015-02-16 07:18:46
【问题描述】:
我的 ASP.NET 应用程序中有以下 C# 代码:
string script = @"alert('Message head:\n\n" + CompoundErrStr + " message tail.');";
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Test", script, true);
CompoundErrStr 是 SQL Server 生成的错误消息(从存储过程中冒出的异常文本)。如果它包含任何表列名称,它们会用单引号括起来,并且 JavaScript 在执行期间会中断,因为单引号被视为字符串终止符。
作为对单引号的修复,我将代码更改为:
CompoundErrStr = CompoundErrStr.Replace("'", @"\'");
string script = @"alert('Message head:\n\n" + CompoundErrStr + " message tail.');";
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Test", script, true);
现在可以正常使用了。
但是,还有其他特殊字符需要像这样转义吗?是否有可用于此目的的 .Net 函数?类似于 HttpServerUtility.HtmlEncode 但用于 JavaScript。
编辑我使用 .Net 3.5
【问题讨论】:
-
您可以使用相同的HttpServerUtility.HtmlEncode,它更可靠,可以将任何特殊字符转换为等效的HTML代码。
-
@Sreenath HtmlEncode 不对 JavaScript 字符串执行转义...
-
"CompoundErrStr" 在附加 javascript 之前应单独编码。
-
Server.HtmlEncode 对单引号没有任何作用。
-
@Joe Schmoe:如果您正在寻找可以对特殊字符进行编码的 JS 函数。您可以尝试使用 js 中的“encodeURIComponent”功能。 w3schools.com/jsref/jsref_encodeuricomponent.asp
标签: javascript c# asp.net .net