HTMLencode HTMLdecode

我有一个文本区域,我想将用户输入的文本存储在数据库中,其中html格式如段落,编号列表。 我正在使用HTMLencode和HTMLdecode。

我的代码示例如下:

string str1 = Server.HtmlEncode(TextBox1.Text); Response.Write(Server.HtmlDecode(str1)); 

如果用户输入带有2个段落的文本,则str1在段落之间显示字符\ r \ n \ r \ n。 但是当它将它写入屏幕时,只需在第1段附加第2段。 虽然我正在解码它,为什么不打印2段?

简单的解决方案是:

 string str1 = Server.HtmlEncode(TextBox1.Text).Replace("\r\n", "
");

这假设您只关心获得正确的
标签。 如果你想要一个真正的格式化程序,你需要一个像Aaronaught建议的库。

这不是HtmlEncodeHtmlDecode所做的。 差远了。

这些方法用于“转义”HTML。 <变成<>变成> , 等等。 您可以使用这些来逃避用户输入的输入,以避免跨站点脚本攻击和相关问题。

如果您希望能够进行纯文本输入并将其转换为HTML,请考虑像Markdown这样的格式化工具(我相信Stack Overflow使用MarkdownSharp )。

如果您想要的只是换行符,则可以使用text.Replace("\r\n", "
")
,但处理更复杂的结构(如有序列表)很困难,并且已有现有工具可以处理它。

HTML无法将\ r \ n识别为换行符。 将它们转换为“p”或“br”标签。