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

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

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

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

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

谷歌搜索它表明它是某种UTF-8控制字符,应该设置“大端”或“小端”编码。

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

echo 'the string'...

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

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


侃侃尔雅
浏览 479回答 3
3回答

蓝山帝景

总结并指定解决方案:Windows记事本将BOM表字符(3个字节:EF BB BF)添加到以utf-8编码保存的文件中。PHP似乎并没有受到它的困扰-除非您将一个php文件包含到另一个文件中-否则事情会变得混乱,并且字符串会以字符(65279)开头显示。您可以使用另一个文本编辑器(例如Notepad ++)来编辑文件,并使用编码“在没有BOM的UTF-8中编码”,这似乎可以解决问题。另外,您可以在记事本中保存其他具有ANSI编码的php文件-这似乎也可以工作(也就是说,如果您实际上在文件中不使用任何扩展字符,我想...)
打开App,查看更多内容
随时随地看视频慕课网APP