跨语言字符串转义

本文关键字:转义 字符串 语言 | 更新日期: 2023-09-27 18:09:03

我有一个c#中包含错误消息的字符串。此消息可以包含单引号或双引号或两者,但我可以自由地操作字符串,但我需要(以及HTML/Javascript)。

例如,可以显示以下消息(内容不重要,只是它们可以包含单引号或双引号):

  • The following error has occurred: "You dun goofed."
  • The specified path isn't valid.
  • The following error has occurred: "I'm a goof"

这个字符串被插入到HTML中,作为onClick处理程序中的警告。听起来很复杂,我来解释一下:

<a onClick="alert('myContentGoesHere')">View Error</a>

我能够通过用c#中的''替换'来显示单引号。但是,我尝试类似地转义"导致了奇数反斜杠,它终止了onClick属性并导致无效的HTML。

到目前为止,我已经尝试将"替换为:

  • '"
  • ''"
  • &quot;
  • &#92;&quot;

不行。我觉得我可能从错误的角度来处理这个问题,所以如果你有一个解决方案,超越字符串替换,我洗耳恭听。谢谢你提供的任何帮助。

跨语言字符串转义

要使值在JavaScript中作为字符串文字工作,您需要转义字符串分隔符和反斜杠。然后,您需要对JavaScript进行HTML编码,使其作为HTML属性中的值工作。

的例子:

string code =
  "<a onClick='"" +
  HttpUtility.HtmlEncode(
    "alert('" +
    myContentGoesHere.Replace("'", "'''").Replace("''", "''''") +
    "');"
  ) +
  "'">View Error</a>";

如果字符串可以包含控制字符,您也需要替换它们。从

中添加您需要的内容:
 .Replace("'r", "''r")
 .Replace("'n", "''n")
 .Replace("'b", "''b")
 .Replace("'t", "''t")
 .Replace("'v", "''v")
 .Replace("'f", "''f")