为什么â€<或被随机插入我的html体内?

时间:2015-07-15 09:52:15

标签: javascript html encoding utf-8

我在本地开发期间发现 - 正在插入页面。它的行:â€<â€<â€<â€

这是一个基本页面,通过CodeKit托管在本地Web服务器上。但是,当我直接从PC加载页面作为file://,在资源管理器中双击它时,也会发生此问题。

最初,该文件包括:

<html>
  <head>
    <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script>
      /* Some JS */
    </script>
  </head>
  <body>
  </body>
</html>

我非常困惑,所以我尝试向其添加doctype <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

仍然没有运气,然后通过谷歌搜索我注意到关于字符集的事情,所以我添加了UTF-8。 <meta charset="UTF-8">哦,它消失了。但并不完全。检查来源,​现已更改为&#8203,但在页面上不再显示。也被称为零宽度空间? (经过一些谷歌搜索)。

为什么会这样?

最终代码,现在Chrome Dev Tools Inspector中显示零宽度空间。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script type="text/javascript">
      /* With or without JS code in these, the issue occurs */
    </script>
  </head>
  <body>
    Hello World
  </body>
</html>

进度: 我最终删除了所有的JS,但保留了脚本标记,并设法将其缩小到由<script></script>标记引起的。即使空虚。如果没有这些,则不会在页面上或在Inspector中显示奇怪的字符。

为什么会这样?我知道最佳实践是使用外部JS文件,但为什么会这样。很奇怪。

相关问题可以在这里找到参考,这有点帮助,但仍然无法解决,因为问题与我的不同:Why is "&#8203;" being injected into my HTML?

更新1 哎呀。菜鸟错误。忘记脚本标记不是自动关闭。改变了,但仍然有问题。更正了上述最终代码。

更新2 根据我的答案修正了问题。虽然没有找到解释为什么会发生这种情况。

更新3 有些人仍然对此投票,所以我觉得我必须解释。是的,得到高票的答案之一概述了关闭标签的错字。是的,在我复制到SO时,这是一个错字。原始代码没有自闭标签。无论哪种方式,它对OP问题没有影响,这就是出现这些随机字符的原因。

4 个答案:

答案 0 :(得分:4)

你的html脚本部分无效(形式不正确)。你有:

<script src="https://code.jquery.com/jquery-2.1.1.min.js" />
<script>
</script>

应该是:

<script src="https://code.jquery.com/jquery-2.1.1.min.js">
</script>

答案 1 :(得分:1)

我已将您的代码粘贴到Notepad中的Windows,然后在本地保存并从FireFoxChrome浏览,但没有看到您的问题。

这可能是因为有问题的jQuery加载而导致的。尝试排除加载jQuery或尝试在本地加载,而不是从CDN或任何在线位置加载。

您还可以查看类似的问题:Why are these wierd characters being inserted in Facebook iframe when using jQuery? ​

答案 2 :(得分:0)

自我回答,因为我没有找到代码中奇怪的外观的解释,但我确实找到了解决问题的方法。

将旧文件中的所有其他代码复制到一个全新的空白文件中,逐块复制,完全替换它,问题就会消失。

这意味着它必须是字符编码问题或什么? Sublime是纯文本,所以看起来很奇怪。但是,它现在消失了。而且我认为这将是其中一个无法解释的问题,因为它无法被其他人复制。对于将来在Google中发现此功能的其他人有用。只需将代码块逐块复制到新文件中......

解决方案/解决方法修复,没有理由说明为什么一切都发生在......:s

答案 3 :(得分:0)

我在Mac上遇到了同样的问题:这是问题所在。我从PDF中复制了粘贴,所以我添加了一些仅在浏览器上显示的特殊字符。解决方案是删除一些字符,然后手动重新输入。