首页 / 知识

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

2023-04-14 01:46:00

关于编码: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>


输出函数字符编码

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢