HTMLencode HTMLdecode

做~自己de王妃 提交于 2019-12-01 05:23:59

问题


I have a text area and I want to store the text entered by user in database with html formatting like paragraph break, numbered list. I am using HTMLencode and HTMLdecode for this.

Sample of my code is like this:

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

If user entered text with 2 paragraphs, str1 shows characters \r\n\r\n between paragraphs. but when it writes it to screen, just append 2nd paragraph with 1st. While I'm decoding it, why doesn't it print 2 paragraphs?


回答1:


The simple solution would be to do:

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

This is assuming that you only care about getting the right <br /> tags in place. If you want a real formatter you will need a library like Aaronaught suggested.




回答2:


That's not what HtmlEncode and HtmlDecode do. Not even close.

Those methods are for "escaping" HTML. < becomes &lt;, > becomes &gt;, and so on. You use these to escape user entered input in order to avoid Cross-Site Scripting attacks and related issues.

If you want to be able to take plain-text input and transform it into HTML, consider a formatting tool like Markdown (I believe that Stack Overflow uses MarkdownSharp).

If all you want are line breaks, you can use text.Replace("\r\n", "<br/>"), but handling more complex structures like ordered lists is difficult, and there are already existing tools to handle it.




回答3:


HTML doesn't recognize \r\n as a line break. Convert them to "p" or "br" tags.



来源:https://stackoverflow.com/questions/2650059/htmlencode-htmldecode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!