编码撇号

问题描述:

我正在建立一个字符串在服务器上被放入一个JavaScript变量在客户端上。编码撇号

什么是最好的编码是为了避免任何问题

现在在服务器上我正在做这样的事情的:

html = html.Replace("'", "'"); 

但我相信有更优雅的傻瓜证明的方式做这样的事情。

你真的更好使用Microsoft Anti-Cross Site Scripting Library来做到这一点。他们提供了一个JavaScriptEncode方法你想要做什么:

Microsoft.Security.Application.AntiXss.JavaScriptEncode("My 'Quotes' and ""more"".", False) 
+0

不要忘了取消转义它的前端例如,如果您想用它作为警报框。 – 2011-05-30 19:24:14

我不知道在你使用这个字符串,它的上下文,但\'可能是你在找什么。反斜杠是一个转义字符,允许您使用certain characters,否则这些字符串不会出现在字符串文字中。这是输出的JavaScript应该是什么样子:

alert('It\'s amazing'); 

当然,你可以在这种特殊情况下使用alert("It's amazing");

无论如何,如果你正在构建的JavaScript代码:

html = html.Replace("'", "\\'"); 

在另一方面,也有除了需要一些处理引号其他字符。使用Microsoft Anti-Cross Site Scripting Library将一次获得所有人。

您需要在字符串值中转义的字符是反斜杠和用作字符串分隔符的字符。

如果单引号(')被用作字符串分隔符:

html = html.Replace(@"\", @"\\").Replace("'", @"\'"); 

如果引号(“)作为字符串分隔符:

html = html.Replace(@"\", @"\\").Replace(@"""", @"\"""); 

如果你不知道哪个是分隔符使用时,或者如果它将来可能会改变,你可以逃脱既:

html = html.Replace(@"\", @"\\").Replace("'", @"\'").Replace(@"""", @"\"""); 

html = html.Replace("'", "%27"); 

我发现AntiXSS库不能完成我正在寻找的,这是编码服务器端和解码在JavaScript中。

相反,我用Microsoft.JScript.dll它允许您:

GlobalObject.escape(string); 

和JavaScript中的客户端:

unescape(string);