php - 如何避免在php中回显字符65279?

标签 php javascript ajax utf-8

我遇到了类似的问题 here (以及在其他地方)- 在 ajax 回调中,我得到一个看起来不错的 xmlhttp.responseText(当我提醒它时 - 它显示正确的文本) - 但是当使用“if”语句将其与字符串进行比较时 - 它返回 false。

(我也是编写返回该字符串的服务器端代码的人)——经过大量研究该字符串——我发现该字符串有一个“不可见字符”作为其第一个字符。未显示的字符。如果我将它复制到记事本 - 然后删除第一个字符 - 直到再次按 Delete 才会删除。

我为 xmlhttp.responseText 中返回的字符串做了一个 charCodeAt(0)。它返回 65279

谷歌搜索显示它是某种 UTF-8 控制字符,应该设置“big-endian”或“small-endian”编码。

所以,现在我知道了问题的原因——但是……为什么要回显该字符? 在源 php 中,我只是使用

echo 'the string'...

它显然以某种方式输出 [chr(65279)] 字符串...

为什么?我该如何避免呢?

最佳答案

总结并指定解决方案:

Windows 记事本将 BOM 字符(3 个字节:EF BB BF)添加到以 utf-8 编码保存的文件中。

PHP 似乎并没有被它困扰 - 除非你将一个 php 文件包含到另一个 - 然后事情变得一团糟,字符串显示时前面加上字符 (65279)。

您可以使用其他文本编辑器(如 Notepad++)编辑该文件,并使用编码
“在没有 BOM 的情况下以 UTF-8 编码”,
这似乎解决了问题。

此外,您可以在记事本中使用 ANSI 编码保存其他 php 文件 - 这似乎也有效(也就是说,如果您实际上没有在文件中使用任何扩展字符,我猜...)

关于php - 如何避免在php中回显字符65279?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6538203/

相关文章:

php - <body> 标签 & script 标签和 link 标签下方的空白区域位于 head 标签的 body 标签下方

php - 有没有一种方法可以在不按提交按钮的情况下自动触发提交?

javascript - 如何将隐藏输入传递给 JavaScript

javascript - 如何检查 TD 是否是行中类(class)的最后一个

asp.net - 使用 AJAX 从 ASPX 站点检索 XML 数据

javascript - 无法弄清楚为什么 javascript 在我的 php 文件中不起作用

javascript - 从 PHP 返回 JS 源代码

javascript - HTML5 拖放占位符在离开时将parentNode 设置为 null (js vanilla)

ajax - Node 简单爬虫 : ajaxed content pages crawl issue

javascript - JQuery ajax 查询非常安静地失败