【问题标题】:Using utf-8 in php and loading file (require_once) gives strange char在 php 中使用 utf-8 并加载文件(require_once)会产生奇怪的字符
【发布时间】:2015-12-20 03:38:41
【问题描述】:

在我使用 require_once('something.php'); 的地方,我在 html 中有奇怪的字符,当我在验证器上检查页面时:

Validation Output: 1 Error 
Error Line 1, Column 1: character "" not allowed in prolog 

这只发生在我使用 UTF-8 时。之前我有 ANSI 文件,没问题。

是的,我正在更改元数据并将所有文件保存为 UTF-8 我可以将代码移动到部分正文,但这对我来说很奇怪。

【问题讨论】:

  • 所以?你解决了吗?
  • 是的,但我现在不能让你的回答有用;)
  • 什么意思?那么原因是什么?将其添加为答案会很好,或者我可以更新我的答案。由你决定。但是我们绝对应该在这里发布它,所以它对其他人有一定的价值。

标签: php html utf-8 require-once


【解决方案1】:

这很可能是由UTF-8 BOM (Byte Order Mark) 引起的。在某个 HEX 查看器/编辑器中打开任何文件并检查该文件中的前 3 个字节。

Windows-1250 编码中的 UTF-8 BOM 如下所示:。或 ISO-8859-1 中的 。那是十六进制的EF BB BF

只需将文件保存为 UTF-8 不带 BOM。例如Notepad++ editorFormat 菜单下有两个选项:

  • 转换为 UTF-8(无 BOM)
  • 转换为 UTF-8

【讨论】:

  • 谢谢,我可以在没有 BOM 的情况下保存在 sharepoint Designer 2007 中吗?可能会干扰程序中的文件?
  • 我对Sharepoint Designer一无所知,但我建议你不要使用它,因为我知道微软的软件。使用 Notepad++,它是免费的、开源的、轻量级的和良好的。它做用户想要的,而不是它认为对用户最好的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2019-01-11
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 2014-11-19
相关资源
最近更新 更多