一尘不染

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

javascript

我得到一个看起来不错的xmlhttp.responseText(当我发出警报时-它显示正确的文本)-但是当使用’if’时将其与字符串进行比较的语句-返回false。

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

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

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

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

echo 'the string'...

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

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


阅读 260

收藏
2020-05-01

共1个答案

一尘不染

总结并指定解决方案:

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

PHP似乎并没有受到它的困扰-除非您将一个php文件包含到另一个文件中-否则事情会变得混乱并且字符串会以字符(65279)为前缀显示。

您可以使用另一个文本编辑器(例如Notepad ++)来编辑文件,并使用编码
“在没有BOM的UTF-8中编码”,
这似乎可以解决问题。

另外,您可以在记事本中使用ANSI编码保存其他php文件-这似乎也起作用(也就是说,如果您实际上在文件中不使用任何扩展字符,我想…)

2020-05-01