【问题标题】:utf8 without BOM encoding in eclipseeclipse中没有BOM编码的utf8
【发布时间】:2012-05-11 10:12:14
【问题描述】:

经过一番头疼后,我发现使用设置编码 UTF8(带有 BOM)的 eclipse 会导致错误。当您使用包含导致网页的标题在 chrome 中呈现在正文中时,它会导致添加空格。

即。在 index.php 上,当然前后没有间隙

<?php include_once('header.php'); ?><body>test</body>

和 header.php 有(当然又没有间隙)

<!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>
<title>test title</title>
</head>

然后测试标题出现在正文中(不是在视图源中,而是在 chrome 的控制台中)。这会导致页面顶部出现空白。

在notepad++中打开index.php和header.php,将编码改成UTF8无BOM即可解决问题。 如何在 Eclipse 中解决这个问题?! 切换到 notepad++ 是不可取的,Eclipse 中有太多有用的好功能(更好的自动完成、自动版本控制等)。

对我来说是个谜……

【问题讨论】:

  • 文件 -> 属性 -> 资源 -> 文本编码。但是我没有看到 tge BOM 选项 ....
  • 这就是问题所在,我只能用 BOM 更改为 UTF8,这无济于事..
  • 看看here
  • :( 所以我坚持用notepad++手动转换每个文件然后......

标签: php eclipse byte-order-mark


【解决方案1】:

在eclipse中,只需将文件的编码改为iso(右键文件->属性)并删除前三个BOM字符,保存文件并重新打开即可。

【讨论】:

  • 我发现使用 Edit->Set Encoding 更容易。将其设置为 ISO,删除字符,保存,将其设置回 UTF-8。无需关闭并重新打开文件。
【解决方案2】:

据我所知,只要您的工作区(或文件类型)设置为 UTF-8,就不会为新文件创建新的 BOM,但会为旧的 BOM(在其他编辑器中创建)维护甚至显示取决于打开文件的编辑器(PHP 编辑器与 PHP+HTML 编辑器)。

如果您的文件中有随机 BOM,这可能是因为您团队中的某个人使用了不同的编辑器,默认情况下 BOM 处于启用状态(您好,Dreamweaver!)。每当此人创建一个新文件时,您和他的编辑都会插入和维护一个 BOM(但如果你们中的一个人删除它就可以了)。

如果您精通 bash,我建议您使用以下脚本批量修剪 BOM:

sed '1 s/\xEF\xBB\xBF//' < input > output


BOM 魔法来源:http://thegreyblog.blogspot.com/2010/09/shell-script-to-find-and-remove-bom.html

【讨论】:

  • 很好的解决方案,网站上发布的bash非常有用,因为它可以在一行中处理多个文件。
猜你喜欢
  • 2013-07-15
  • 2023-04-02
  • 1970-01-01
  • 2014-07-18
  • 2012-04-06
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多