【问题标题】:Why is  appearing in my HTML? [duplicate]为什么  出现在我的 HTML 中? [复制]
【发布时间】:2012-03-30 07:27:20
【问题描述】:

我在 Firebug  中看到了这个角色。

我不知道为什么会这样,我的代码中没有这样的字符。对于 Firefox 来说没问题,但在 IE 中一切都会中断。我什至无法在 Google 中搜索此角色。

我用没有 bom 的 utf-8 编码保存了我的文件。

【问题讨论】:

  • 不,不可能重复阅读该帖子的这一行:“在没有 BOM 的情况下以 UTF-8 编码”,这似乎可以解决问题。然后读我的!!
  • 同一个问题的两种不同症状应该体现在两个不同的问题中,IMO。感谢 mehdi 提供 Firebug 症状的屏幕截图。感谢 @Vega 提供 ajax 症状的链接。
  • 如果有人在使用 razor 作为视图引擎的 ASP.NET MVC 中遇到此问题,请在 Notepad++ 中打开文件并检查页面顶部的 @using。它将帮助您解决问题。
  • 我在我的 MVC6 Web 应用程序中也遇到了这个问题。我在最顶部的布局页面中添加了以下行,问题已解决。
  • 关键答案 ... 让您的开发文件使用 ANSI/ASCII 编码

标签: html


【解决方案1】:

有问题的字符 &#65279 是 Unicode 字符“零宽度无间隔”(U+FEFF)。可能是您通过复制/粘贴将其复制到代码中而没有意识到。由于它不可见,因此很难判断您是否使用了显示实际 unicode 字符的编辑器。

一种选择是在一个非常基本的文本编辑器中打开文件,该编辑器不理解 unicode,或者理解它但能够使用其实际代码显示任何非 ascii 字符。

找到它后,您可以删除它周围的小块文本,然后手动重新键入该文本。

【讨论】:

  • 加油notepad.exe!其他没什么好处。 :D
  • 我个人使用 emacs 来处理这些事情......但是对于那些你不确定他们是否熟悉这些工具的听众来说,我认为最好不要提及它 :)跨度>
  • 我用记事本打开它,没有不寻常的字符,我保存它现在我在顶部有三个字符。万岁! :)
  • 这对我有用...我发现结尾
    的字体大小不同,这导致了问题。谢谢你
  • 萨拉姆。还可以使用记事本 ++包含的文件 转换为“不带 BOM 的 UTF-8”
  • 【解决方案2】:

    只需使用notepad ++编码UTF-8,无需BOM。

    【讨论】:

    • 这行得通。 Facebook Object Debugger --> Scraped URL 告诉我我有 打破我的标题。
    • @shonhloi 这比 RHSeeger 的回答更好更容易
    • 谢谢。我在菜单中设置:编码>> UTF-8 编码。它对我有用。谢谢。
    • 只是想插话 - 这适用于 Sublime Text,只需打开有问题的文件并从“文件”菜单中选择“使用编码保存”,然后选择 UTF-8。
    【解决方案3】:

    是的,解决这个问题非常简单,只需使用记事本++ 打开该文件并按照步骤进行操作 --> 编码\编码 UTF-8 而不使用 BOM。 然后保存。 它也适用于我!

    【讨论】:

      【解决方案4】:

      试试:

      <?php 
      // Tell me the root folder path.
      // You can also try this one
      // $HOME = $_SERVER["DOCUMENT_ROOT"];
      // Or this
      // dirname(__FILE__)
      $HOME = dirname(__FILE__);
      
      // Is this a Windows host ? If it is, change this line to $WIN = 1;
      $WIN = 0;
      
      // That's all I need
      ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>UTF8 BOM FINDER and REMOVER</title>
      <style>
      body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
      .FOUND { color: #F30; font-size: 14px; font-weight: bold; }
      </style>
      </head>
      <body>
      <?php
      $BOMBED = array();
      RecursiveFolder($HOME);
      echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';
      foreach ($BOMBED as $utf) { echo $utf ."<br />\n"; }
      echo '</p>';
      
      // Recursive finder
      function RecursiveFolder($sHOME) {
        global $BOMBED, $WIN;
      
        $win32 = ($WIN == 1) ? "\\" : "/";
      
        $folder = dir($sHOME);
      
        $foundfolders = array();
        while ($file = $folder->read()) {
          if($file != "." and $file != "..") {
            if(filetype($sHOME . $win32 . $file) == "dir"){
              $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
            } else {
              $content = file_get_contents($sHOME . $win32 . $file);
              $BOM = SearchBOM($content);
              if ($BOM) {
                $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
      
                // Remove first three chars from the file
                $content = substr($content,3);
                // Write to file 
                file_put_contents($sHOME . $win32 . $file, $content);
              }
            }
          }
        }
        $folder->close();
      
        if(count($foundfolders) > 0) {
          foreach ($foundfolders as $folder) {
            RecursiveFolder($folder, $win32);
          }
        }
      }
      
      // Searching for BOM in files
      function SearchBOM($string) { 
          if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
          return false; 
      }
      ?>
      </body>
      </html>
      

      将此代码复制到php文件上传到root并运行它。

      更多信息:http://forum.virtuemart.net/index.php?topic=98700.0

      【讨论】:

      • 太好了,这段代码帮助我检测带有 BOM 的文件。谢谢。
      • 这是一个地狱般的代码。谢谢
      • 保存了我们的网站,你是英雄!
      • 年度英雄,你救了我。非常感谢!
      • 跳跃果冻豆蝙蝠侠!
      【解决方案5】:

      “我不知道为什么会这样”

      我刚刚遇到了一个可能的原因:-) 您的 HTML 页面正在组装中 从单独的文件。也许您的文件仅包含最终页面的正文或横幅部分。这些文件包含一个 BOM (0xFEFF) 标记。然后作为合并过程的一部分,您在最终合并的 HTML 文件上运行 HTML tidy 或 xmllint。

      这将导致它!

      【讨论】:

      • 这也适用于使用Server Side Includes:如果包含的文件是用BOM存储的(例如带有字节顺序标记的UTF-8),就会出现@987654321 @ 在网络服务器组装的文件中。简单的解决方案:将文件另存为 UTF-8 不带字节顺序标记。
      • 非常感谢,伙计。你不知道你是如何救了我的命的。我有完全相同的问题。但这并不总是那么容易,因为:。是的,使用 NOTEPAD++ 很容易,但就像您说的,当网页包含不同的内容时,找到罪魁祸首是件痛苦的事! .我终于找到了! .哈利路亚!!! . .
      【解决方案6】:

      如果您使用的是 Notepad++,“菜单”>>“编码”>>“转换为 UTF-8”您的“包含”文件。

      【讨论】:

        【解决方案7】:

        如果您有很多文件要查看,可以使用此工具: https://www.mannaz.at/codebase/utf-byte-order-mark-bom-remover/

        感谢莫里斯

        它可以帮助我清理系统,使用 CakePhp 中的 MVC,因为我在 Linux、Windows 中使用不同的工具工作。在某些文件中,我的设计被破坏了。所以在使用调试工具签入 Chrome 后,找到 65279错误

        【讨论】:

          【解决方案8】:

          在清除空间之前(修剪)

          然后替换为正则表达式.replace("/\xEF\xBB\xBF/", "")

          我正在研究 Javascript,我是用 JavaScript 做的。

          【讨论】:

            【解决方案9】:

            在这种情况下有效的一个古老的愚蠢技巧...将代码从您的编辑器粘贴到 ms 记事本,然后反之亦然,邪恶的角色就会消失! 我从 wyisyg/msword 复制粘贴问题中获得灵感。 Notepad++ utf-8 w/out BOM 也可以。

            【讨论】:

              【解决方案10】:

              这是我的 2 美分: 我遇到了同样的问题,我尝试使用 Notepad++ 转换为 UTF-8 无 BOM,以及旧的“复制到 MS 记事本然后再返回”技巧,但都无济于事。通过确保所有文件(和“包含”文件)都是相同的文件系统,我的问题得到了解决;我有一些文件是 Windows 格式的,还有一些是从远程 Linux 服务器上复制的,所以是 UNIX 格式的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-09-18
                • 2013-11-27
                • 1970-01-01
                • 2019-12-22
                • 2017-02-20
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多