注意事项将C#字符串编码为Javascript字符串

Mac*_*ado 17 javascript c# encoding serialization

我正在尝试为我的项目编写一个自定义的Javascript MVC3 Helper类,其中一个方法应该将C#字符串转换为Javascript字符串.

我知道C#字符串是UTF-16编码的,Javascript字符串似乎也是UTF-16.这里没问题.

我知道一些字符,如反斜杠,单引号或双引号必须在Javascript上反斜杠转义,所以:

\ becomes \\
' becomes \'
" becomes \"
Run Code Online (Sandbox Code Playgroud)

在编写转换方法之前,还有其他警告我必须注意吗?

编辑:到目前为止很棒的答案,我在问题的答案中添加一些参考资料,以帮助其他人.

Alex K.建议使用System.Web.HttpUtility.JavaScriptStringEncode,我将其标记为正确的答案,因为我使用.Net 4.但是此功能不适用于以前的.Net版本,所以我在这里添加了一些其他资源:

CR  becomes \r   // Javascript string cannot be broke into more than 1 line
LF  becomes \n   // Javascript string cannot be broke into more than 1 line
TAB becomes \t

Control characters must be Hex-Escaped
Run Code Online (Sandbox Code Playgroud)

JP Richardson提供了一个有趣的链接,告知Javascript使用UCS-2,这是UTF-16的一个子集,但如何正确编码这是一个全新的问题.

LukeH在下面的评论中提醒了CR,LF和TAB字符,这让我想起了控制字符(BEEP,NULL,ACK等等).

Ale*_* K. 33

(.net 4)你可以;

System.Web.HttpUtility.JavaScriptStringEncode(@"aa\bb ""cc"" dd\tee", true);
== 
"aa\\bb \"cc\" dd\\tee"
Run Code Online (Sandbox Code Playgroud)