Java 与#32; 及;nbsp;

Java 与#32; 及;nbsp;,java,html,string,jsp,ascii,Java,Html,String,Jsp,Ascii,谁能解释一下和#32;和 我将html数据以二进制形式存储在数据库中,空间可以是或 或有时  另外一个问题是,当我使用JSoup lib将HTML转换为纯文本时,它正确地转换了HTML,但如果我使用java的String.contains(my String)方法。看起来具有的HTML数据与具有 的HTML数据不同。在任何一个字符串中都找不到字符串,反之亦然 例如: HTML1:This ;是 ;我的 ;测试 ;字符串 HTML2:这是我的测试字符串

谁能解释一下
和#32;和

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

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

例如:

HTML1:
This ;是 ;我的 ;测试 ;字符串

HTML2:
这是我的测试字符串

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

HTML1:这是我的测试字符串

HTML2:这是我的测试字符串

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

是空格键的字符

 和 都是不间断空格的字符

如果您的数据来自不同的来源,则可能是空间符号的编码方式不同

在直接比较中,它们可能会显示为不同,只是一个空格字符而已。此字符的常规出现将在末尾折叠为一个空格

其中as
 
都表示不间断空格字符,如果它们连续出现,则它们将折叠或中断为一个空格字符

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

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

  • 和#32
    是一个经典的空格,当你点击空格键时会得到这个空格,由他的HTML实体等价物表示

    &160表示,通常用于防止浏览器将多个空格折叠在一起:

    “ ; ; ; ; ;”
    =>”(仅折叠到一个空间)

    “”
    =>“”(未折叠)


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

    Java 8以后的版本应该可以使用以下方法:

    string.replace(“\\h”,”)
    string.replaceAll(\\h,“”)


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

    这是错误的。正确的方式是string.replaceAll(\\h,“”);根据阿卜杜勒的建议修改!取决于你想要达到的目标