我得到一个看起来不错的xmlhttp.responseText(当我发出警报时-它显示正确的文本)-但是当使用’if’时将其与字符串进行比较的语句-返回false。
(我也是编写返回该字符串的服务器端代码的人)-在深入研究字符串之后,我发现该字符串的第一个字符为“不可见字符”。未显示的字符。如果我将其复制到记事本中- 然后删除了第一个字符-直到再次按Delete键,它才会删除。
我为xmlhttp.responseText中的返回字符串做了一个charCodeAt(0)。然后返回 65279 。
谷歌搜索它表明它是某种UTF-8控制字符,应该设置“大端”或“小端”编码。
所以,现在我知道了问题的原因-但是…为什么要回显该字符?在源PHP中,我只是使用
echo 'the string'...
它显然以某种方式输出[chr(65279)]字符串…
为什么?我该如何避免呢?
总结并指定解决方案:
Windows记事本将BOM字符(3个字节:EF BB BF)添加到以utf-8编码保存的文件中。
PHP似乎并没有受到它的困扰-除非您将一个php文件包含到另一个文件中-否则事情会变得混乱并且字符串会以字符(65279)为前缀显示。
您可以使用另一个文本编辑器(例如Notepad ++)来编辑文件,并使用编码 “在没有BOM的UTF-8中编码”, 这似乎可以解决问题。
另外,您可以在记事本中使用ANSI编码保存其他php文件-这似乎也起作用(也就是说,如果您实际上在文件中不使用任何扩展字符,我想…)