PHP Include 函数输出未知字符

标签 php encoding byte-order-mark

当使用 php include 函数时,include 被成功执行,但是在 include 输出之前它也在输出一个 char,这个 char 是十六进制值 3F 我不知道它是从哪里来的,虽然它似乎发生在每个包含中。

一开始我以为是文件编码,但是这似乎不是问题。我创建了一个测试用例来演示它:(链接不再有效)http://driveefficiently.com/testinclude.php该文件仅包含:

<? include("include.inc"); ?>

include.inc 仅包含:

<? echo ("hello, world"); ?> 

然而,输出是:"?hello, world" 其中 ?是一个具有随机值的字符。正是这个值,我不知道它的来源,它有时会把我的网站搞得一团糟。

关于这可能来自哪里的任何想法?起初我认为这可能与文件编码有关,但我认为这不是问题。

最佳答案

您看到的是一个 UTF-8 字节顺序标记:

The UTF-8 representation of the BOM is the byte sequence EF BB BF, which appears as the ISO-8859-1 characters  in most text editors and web browsers not prepared to handle UTF-8.

Byte Order Mark on Wikipedia

PHP 不理解这些字符应该被“隐藏”,并将它们作为普通字符发送给浏览器。要摆脱它们,您将需要使用“适当的”文本编辑器打开文件,该编辑器允许您将文件另存为 UTF-8,不带前导 BOM。

You can read more about this problem here

关于PHP Include 函数输出未知字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647/

相关文章:

php - 未找到 Laravel 类 'HASH'

php - magento 在同一页面中显示具有不同命名空间的 2 个不同模块

c++ - 'BOM' 字符在文件开头或文件结尾的位置是什么?

php - MySQL和PHP登录用户名和密码检查

php - mysqli fetch_assoc() 将所有字段作为字符串返回

python - 将二进制数据插入pymongo中的Mongo字段

python - 无法使用 Python 打印请求响应

c# - .Net 4.0 在使用 Attributes.Add 时编码单引号

Python - 我可以在不打开文件的情况下将 UTF8 BOM 添加到文件吗?

python - 从BOM发现编码的函数