如何在Sql Server数据库中保存HTML代码以便正确显示?

时间:2016-04-08 10:39:02

标签: java html sql sql-server

我的网站就像Stack Overflow并正在开发中。我使用普通的textarea来输入文本,因为我没有像Stack Overflow那样的WMD编辑器。

当我将HTML代码作为输入并将其存储在文本或nvarchar(max)列的数据库表中时,它会成功存储。但是当我调用该数据进行显示时,它会在屏幕上显示相应的HTML页面而不是HTML代码。我无法解决它。为了更好地理解,我在这里输入我的网站的输入页面和输出页面图像。

这是输入页面的图像:

enter image description here

这是输出页面的图像:

enter image description here

这里出了什么问题?

5 个答案:

答案 0 :(得分:0)

一种简单的方法是替换

< with &lt; and > with &gt; 

在您重新搜索的HTML字符串中,然后在页面上显示。

你试过吗?

答案 1 :(得分:0)

您需要转义HTML,以便浏览器不会解释它。如何做到这取决于你正在使用的视图技术。

使用JSP和JSTL,转义将自动使用<c:out value="${myString}"/>完成。如果你还没有使用JSTL,现在是时候开始了(那里还有很多其他有用的东西)。

答案 2 :(得分:0)

你可以像文字一样保存html代码。您可以使用varchar(max)type列将html代码保存在表中。显示代码取决于浏览器。但是如果使用nvarchar类型会导致显示问题。

答案 3 :(得分:0)

另一种可能的解决方案是在存储到数据库之前替换html标记。我做的是: -

text=text.replaceAll("<", "&lt;");
text=text.replaceAll(">", "&gt;");

然后将数据存储在数据库及其工作中。感谢Bibin Mathew。

答案 4 :(得分:-1)

从textarea接收输入时,您需要使用htmlentities()转换输入文本;并存储在数据库中。它给了

<?php
$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);
?>

当你提取数据库时使用html_entity_decode();恢复它。

    <?php
$str = "A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);
?>