在 php 中使用 utf-8 并加载文件(require_once)会产生奇怪的字符

Posted

技术标签:

【中文标题】在 php 中使用 utf-8 并加载文件(require_once)会产生奇怪的字符【英文标题】:Using utf-8 in php and loading file (require_once) gives strange char 【发布时间】: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 我可以将代码移动到部分正文,但这对我来说很奇怪。

【问题讨论】:

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

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

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

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

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

【讨论】:

谢谢,我可以在没有 BOM 的情况下保存在 sharepoint Designer 2007 中吗?可能会干扰程序中的文件? 我对Sharepoint Designer一无所知,但我建议你不要使用它,因为我知道微软的软件。使用 Notepad++,它是免费的、开源的、轻量级的和良好的。它做用户想要的,而不是它认为对用户最好的。

以上是关于在 php 中使用 utf-8 并加载文件(require_once)会产生奇怪的字符的主要内容,如果未能解决你的问题,请参考以下文章

PHP中如何导入PHP文件

安全地将私有 PHP 文件存储在公共目录之上并使用 require_once 加载它们吗?

如何在 php 中运行或加载 .po/.mo 文件以进行本地化

php手动加载视图文件

oracle编码gbk加载utf-8文件需要转码么?

保存并重新加载以返工使用 JointJS over PHP 创建的图表