关于编码:PHP包含输出未知字符的函数

关于编码:PHP包含输出未知字符的函数

PHP Include function outputting unknown char

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

p>起初我认为它是文件编码,但这似乎不是问题。我创建了一个测试用例来演示它:(强>链接不再工作/强>)a href ="http://driveefficiently.com/testinclude.php"> http://driveefficiently.com/testinclude.php/ a>此文件仅包含:/ p>

预>代码>?包括("include.inc"); ?>
/代码> / PRE>

p>和include.inc仅包含:/ p>

预>代码>? echo("你好,世界"); ?>
/代码> / PRE>

然而,输出是:em>"?hello,world"/ em>在哪里?是一个具有随机值的char。正是这个价值我不知道它的起源,它有时会搞砸我的网站。 / P>

p>关于这可能来自哪里的任何想法?起初我以为它可能与文件编码有关,但我不认为这是一个问题./p>


p>您所看到的是UTF-8字节顺序标记:/ p>

BLOCKQUOTE>
p> BOM的UTF-8表示是字节序列EF BB BF,它显示为ISO-8859-1字符???在大多数文本编辑器和Web浏览器中都没有准备好处理UTF-8。 / P>

p> a href ="http://en.wikipedia.org/wiki/Byte_Order_Mark"rel ="noreferrer">维基百科上的字节顺序标记/ a> / p>
/ BLOCKQUOTE>

p> PHP不明白这些字符应该被"隐藏"并将它们发送到浏览器,就好像它们是普通字符一样。要摆脱它们,您需要使用"正确的"文本编辑器打开文件,该编辑器允许您将文件保存为UTF-8而不使用前导BOM ./p>

p> a href ="http://juicystudio.com/article/utf-byte-order-mark.php"rel ="noreferrer">你可以在这里阅读更多关于这个问题的信息/ a> / p>


p>您的Web服务器(或文本编辑器)显然在文档中包含一个href ="http://en.wikipedia.org/wiki/Byte_order_mark"> BOM / a>。我没有在浏览器中看到流氓角色,除非我将网站的编码明确设置为Latin-1。然后,我看到两个(!)UTF-8 BOMs./p>

p> / EDIT:由于存在em> two / em> BOM,我得出结论,编辑器实际上是在文件开头包含了BOM。你用什么编辑器?如果您使用Visual Studio,则必须在"文件"菜单中说"另存为...",然后选择"使用编码保存..."按钮。在那里,选择"没有BOM的UTF-8"或类似的东西./p>


p>它没有显示在Firefox或IE中的渲染页面上,但是当您在IE / p中查看源时,您可以看到有趣的角色>

p> img src ="/d/file/2023041401/3jeolfklag015.webp"alt ="在此处输入图像说明"> / p>

这是在Linux机器上吗?你能找到并用vim或sed替换,看看你是否能以这种方式摆脱3F? / P>

p>如果它在Windows上,请尝试使用记事本打开include.inc以查看有趣的字符是否可见并且可以删除./p>

我也很想知道如果你从包中复制代码然后自己运行它会发生什么./p>


BLOCKQUOTE>
我也很想知道什么
如果您复制代码,则会发生
包含并自行运行它./p>
/ BLOCKQUOTE>

马克:这是在共享托管解决方案上,所以我无法获得对该文件的shell访问权限。但是,正如你可以看到href ="http://driveefficiently.com/include.inc">这里/ a>,没有不应该存在的字符,并且运行与脚本相同的文件不会产生这个炭。 (共享托管公司一直提供帮助,不断告诉我这是一个浏览器问题)./ p>


p>字符3F实际上em>是/ em>问号,它不仅仅显示为one./p>

我得到了与托马斯相同的结果,没有出现问号./p>

p>从理论上讲,它可能是Web代理的一些问题,但我倾向于怀疑你的PHP标记中有一个流浪的问号......也许你现在已经修复了所以我们没有看到问题./p>


p>我在你链接的页面上看到代码> hello,world / code>。没问题,我可以看到... / p>

我正在使用Firefox 3.0.1和Windows XP。你在运行什么浏览器/操作系统?也许这可能是问题./p>


推荐阅读

    程序执行linux命令?

    程序执行linux命令?,系统,工作,地址,环境,信息,管理,命令,文件,目录,程序,lin

    linux执行2个命令?

    linux执行2个命令?,工作,系统,基础,命令,基础知识,信息,管理,在线,概念,第一

    linux命令批量执行?

    linux命令批量执行?,系统,代码,工作,周期性,数据,定期,环境,命令,文件,脚本,l

    linux二进制执行命令?

    linux二进制执行命令?,系统,工作,情况,代码,信息,位置,地址,命令,文件,目录,L

    linux执行退出命令?

    linux执行退出命令?,档案,状态,工作,命令,信息,地址,电脑,系统,编辑,文件,lin

    linux命令输出加时间?

    linux命令输出加时间?,时间,系统,名称,设备,命令,信息,管理,标准,数字,百度,l

    linux命令日志输出?

    linux命令日志输出?,系统,状态,命令,情况,对比,标准,实时,服务,下来,数据,怎

    linux中后台执行命令?

    linux中后台执行命令?,系统,状态,暂停,灵活,电脑,网络,服务,第一,名字,命令,l

    linux命令输出截取?

    linux命令输出截取?,位置,网上,信息,命令,字符串,字符,左边,日志,中间,之间,L

    linux常用的执行命令?

    linux常用的执行命令?,系统,地址,工作,基础,标准,命令,工具,环境,信息,代码,L

    linux命令行大字符?

    linux命令行大字符?,工作,地址,系统,信息,管理,第一,发行,在线,最新,标准,lin

    linux执行线程命令?

    linux执行线程命令?,系统,工作,线程,软件,服务,管理,信息,环境,名称,命令,lin

    linux命令输出计算?

    linux命令输出计算?,标准,地址,工作,信息,系统,命令,软件,数据,文件,控制台,l

    linux执行多条命令?

    linux执行多条命令?,数据,通信,管理,系统,命令,标准,信息,工具,代码,环境,Lin

    linux持续命令输出?

    linux持续命令输出?,系统,工作,地址,信息,情况,状态,数据,管理,工具,指标,lin

    linux命令行打印输出?

    linux命令行打印输出?,地址,工作,命令,网络,信息,标准,系统,文件,目录,控制

    linux命令查找字符串?

    linux命令查找字符串?,工具,信息,命令,字符串,系统,工作,文件,范本,样式,文

    linux退出命令未执行?

    linux退出命令未执行?,服务,工具,代码,环境,数据,官网,命令,用户,脚本,字符

    linux动态执行命令?

    linux动态执行命令?,时间,信息,名字,工作,网上,业务,工具,对比,地址,下来,如

    linux命令执行次数?

    linux命令执行次数?,时间,系统,地址,命令,数据,管理,工具,信息,环境,历史,lin