【问题标题】:Difference between   and  和之间的区别
【发布时间】:2012-08-12 14:49:16
【问题描述】:

谁能解释一下  and   之间的区别?

我有 html 数据以二进制形式存储在数据库中,空间可以是    或有时是  

还有一个问题是,当我使用 JSoup lib 将此 HTML 转换为纯文本时,它会正确转换它,但如果我使用 java 的 String.contains(my string) 方法。看起来具有  的HTML 数据与具有  的HTML 数据不同。反之亦然找不到字符串。

例子:

HTML1:This is my test string

HTML2:This is my test string

如果我使用 JSoup 将其转换为纯文本。它返回

HTML 1 : 这是我的测试字符串

HTML 2 : 这是我的测试字符串

但是两个字符串仍然不相同。为什么会这样?

【问题讨论】:

    标签: java html string jsp ascii


    【解决方案1】:

    是空格键的字符。

      和 &nbsp 都是非分行空格的字符。

    如果您的数据来自不同的来源,则空格符号的编码可能不同。

    在直接比较中,它们可能会显示为不同。

    【讨论】:

      【解决方案2】:

       ,只是一个空格字符而已。此字符的常规出现将在末尾折叠为 一个空格 字符。

      &#160  都代表非分断空格字符,如果它们一个接一个连续出现,它们将被折叠或分解为一个空格字符。

      只是,它们之间的区别在于&#160HTML 编号,而 HTML 名称

      基本上所有这些都是 HTML 实体。您可以通过以下链接了解和了解它们。

      1. Link 1
      2. Link 2

      【讨论】:

        【解决方案3】:

          是经典的空格,当你按下空格键时你会得到一个空格,由他的 HTML 实体等价物表示。

          代表non-breaking space,常用于防止多个空格被浏览器折叠在一起:

        "    " => " "(只折叠成一个空格)

        "    " => “    ”(未折叠)

        如果您正在解析一个同时包含经典空格和不间断空格的字符串,则可以安全地将一个替换为另一个。

        【讨论】:

          【解决方案4】:

          Java 8 以上应该可以工作:

          string.replace("\\h", " "); 要么 string.replaceAll("\\h", " ");

          其中 \h 是如here 所述的水平空白字符

          【讨论】:

          • 这是错误的。正确的方法是 string.replaceAll("\\h","");
          • 按照阿卜杜勒的建议修改!取决于您要达到的目标
          【解决方案5】:

          完成其他答案...

          除了不换行和多个空格的折叠之外,HTML渲染实际上不会完全一样,即使大多数答案都是相反的,这通常是正确的。

          举个例子:

          <span>&#32;test</span> <br/>
          <span>&#160;test</span>
          

          第一个span 不会在字符串的开头包含空格,而第二个span 会。这肯定是崩溃行为的一部分:https://en.wikipedia.org/wiki/Non-breaking_space

          所以在这种情况下,如果您需要第一个空格,那么区别很重要。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-12-25
            • 2020-05-10
            • 2014-09-20
            • 2010-10-28
            • 2015-10-04
            • 2011-02-18
            • 2019-12-21
            • 2018-01-18
            相关资源
            最近更新 更多