4

我有一个文本区域,我想将用户输入的文本存储在数据库中,并使用 html 格式,如分节符、编号列表。我为此使用 HTMLencode 和 HTMLdecode。

我的代码示例如下:

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

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

4

3 回答 3

12

简单的解决方案是:

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

这是假设您只关心<br />放置正确的标签。如果您想要一个真正的格式化程序,您将需要一个像 Aaronaught 建议的库。

于 2010-04-16T03:28:17.107 回答
3

那不是什么HtmlEncodeHtmlDecode做什么。差远了。

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

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

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

于 2010-04-16T02:08:45.000 回答
0

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

于 2010-04-16T01:50:57.983 回答