Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 为什么有些字符串包含“quot;”&;nbsp&引用;还有一些",&引用;,当我的输入相同时(“)?_Html_String_Vue.js - Fatal编程技术网

Html 为什么有些字符串包含“quot;”&;nbsp&引用;还有一些",&引用;,当我的输入相同时(“)?

Html 为什么有些字符串包含“quot;”&;nbsp&引用;还有一些",&引用;,当我的输入相同时(“)?,html,string,vue.js,Html,String,Vue.js,当我试图在p元素中使用一些数据/字符串时,就会出现问题 我从以下数据开始: data: function() { return { reportText: { text1: "This is some subject text", text2: "This is the conclusion", } } } 我在我的(vue-)html中使用以下数据: {{reportText.text1} {{reportText.text2} 在我的浏览器

当我试图在p元素中使用一些数据/字符串时,就会出现问题

我从以下数据开始:

data: function() {
  return {
    reportText: {
      text1: "This is some subject text",
      text2: "This is the conclusion",
    }
  }
}
我在我的(vue-)html中使用以下数据:

{{reportText.text1}

{{reportText.text2}

在我的浏览器中,当我检查图元时,我会看到以下结果:

<p>This&nbsp;is&nbsp;some&nbsp;subject&nbsp;text</p>
<p>This is the conclusion</p>
这是一些主题文本

这是结论

正如您所看到的,突然之间出现了一个差异,一个p元素使用
,另一个
,尽管我开始时只使用
两个字符串。我知道
在技术上代表相同的东西,但是
字符串的问题是它被视为一个包含一个大字的字符串,而不是多个单独的字。这打乱了我的布局,我无法通过使用某些css属性(word wrap等)来解决这个问题

我尝试过的其他事情:

  • 尝试使用.replace(
    )清理字符串,但没有任何作用。我认为这是因为它基本上是一样的,所以没有什么可以真正取代的。这也是为什么我必须在stackoverflow上使用blockcode在
    之间进行定位的原因
  • 从vue记录数据以查看是否有任何明显差异,但我看不到任何差异。如果我再次记录数据/报表文本,我只会看到带有
    的字符串
因此,我有以下问题:

  • 为什么会发生这种情况?我似乎找不到任何逻辑解释,为什么它有时使用
    ,有时使用
    ,它似乎是随机的,但我确信我遗漏了一些东西
  • 我可以尝试按照字符串的路径进行其他操作,以便查看从
    的转换发生在哪里

  • 根据评论,设计的解决方案最终是针对
    \u00A0
    unicode代码点的简单unicode字符替换(即用普通空格替换unicode非中断空格):

    str.replace(/[\\u00A0]/g',)
    
    说明:

    JavaScript通常允许以两种方式使用unicode字符:您可以直接输入呈现的字符,也可以使用unicode代码点(即,对于JavaScript,使用前缀为
    \u
    的十六进制代码,如
    \u00A0
    )。它没有HTML实体的概念(即
    &
    之间的字符序列,如

    但是,某些浏览器的inspector工具使用HTML实体的HTML概念,并且在适用的情况下,通常使用相应的HTML实体显示unicode字符。如果您在Chrome的inspector和Firefox的inspector中检查相同的源代码(无论如何,在编写此答案时),您将看到Chrome使用HTML实体,而Firefox使用呈现的字符结果。虽然能够在inspector中看到不可打印的unicode字符是一个方便的功能,但Chrome对HTML实体的使用只是一个方便的功能,而不是源代码实际内容的反映


    考虑到这一点,我们可以推断您的源代码包含完全呈现形式的unicode字符。无论unicode字符的形式如何,修复方法都是相同的:您需要明确地将这些unicode空格字符作为目标,并将其替换为普通空格。

    有时不间断空格是unicode字符而不是HTML实体,浏览器的检查器将其显示为HTML实体,尽管它存储为unicode。我自己也遇到过同样的问题。检查并查看一个小的修改(即使用
    '
    代替
    '
    )是否可以解决您的问题。这非常有效。我现在使用的是{reportText.text1 | correctSpaces}},其中correctSpaces是一个过滤器,它使用reportText.text1并应用.replace(/[\\u00A0]/g.“”)。我仍然不明白为什么需要这样做,但至少我现在可以让它工作了。你想提交一个正式的答案,这样我就可以接受它,还是你想让我自己回答它?我一定会提交一个更深入的解释,以帮助缓解任何挥之不去的困惑,这是一个正确的答案。
    <p>This&nbsp;is&nbsp;some&nbsp;subject&nbsp;text</p>
    <p>This is the conclusion</p>