【问题标题】:How to save HTML code in Sql Server database for correct display?如何将 HTML 代码保存在 Sql Server 数据库中以正确显示?
【发布时间】:2016-07-29 14:17:21
【问题描述】:

我的网站就像 Stack Overflow 一样,正在开发中。我正在使用纯文本区域进行文本输入,因为我没有像 Stack Overflow 那样的 WMD 编辑器。

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

这是输入页面的图片:

这是输出页面的图片:

这里出了什么问题?

【问题讨论】:

  • 您需要对 HTML 进行转义,以免浏览器对其进行解释。如何做到这一点取决于您使用的视图技术。你用什么来显示? JSP?你保存数据的方式没有问题,只是显示部分有问题。
  • 是的。我正在使用jsp和html进行显示。

标签: java html sql sql-server


【解决方案1】:

一种简单的方法是替换

< with &lt; and > with &gt; 

在您检索的 HTML 字符串中,然后将其显示在页面上。

你试过了吗?

【讨论】:

  • 是的,它的工作原理。但我想像 Stackoverflow 一样工作。我网站的任何用户在输入代码时都不会注意遵循这些说明。还有其他可行的解决方案吗?
  • 是的,那你为什么要让用户这样做。您以普通 HTML 格式从用户那里获得输入,将其保存在数据库中,将其检索到字符串变量中并执行 string.replace 来替换标签。现在在 UI 中显示它?
【解决方案2】:

您需要对 HTML 进行转义,以免浏览器对其进行解释。如何做到这一点取决于您使用的视图技术。

对于 JSP 和 JSTL,转义是通过 &lt;c:out value="${myString}"/&gt; 自动完成的。如果您还没有使用 JSTL,那么现在是开始的时候了(其中还有很多其他有用的东西)。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        从 textarea 获取 inpute 时,您需要使用 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);
        ?>
        

        【讨论】:

        • 我应该在哪里使用它:html/jsp/servlet 或其他任何地方
        • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 它回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。
        • 这是一个 JSP 问题的 PHP 答案。
        • 这不是回答问题
        猜你喜欢
        • 1970-01-01
        • 2014-02-20
        • 2017-07-25
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        相关资源
        最近更新 更多