当前位置:首页 > 开发 > 编程语言 > PHP > 正文

php中隐形字符65279(utf-8的BOM头)问题

发表于: 2015-05-27   作者:alxw4616   来源:转载   浏览:
摘要: php中隐形字符65279(utf-8的BOM头)问题 今天遇到一个问题. php输出JSON 前端在解析时发生问题:parsererror.   调试: 1.仔细对比字符串发现字符串拼写正确.怀疑是 非打印字符的问题. 2.逐一将字符串还原为unicode编码. 发现在字符串头的位置出现了一个 65279的非打印字符.        

php中隐形字符65279(utf-8的BOM头)问题

今天遇到一个问题. php输出JSON 前端在解析时发生问题:parsererror.

 

调试:

1.仔细对比字符串发现字符串拼写正确.怀疑是 非打印字符的问题.

2.逐一将字符串还原为unicode编码. 发现在字符串头的位置出现了一个 65279的非打印字符.

 

       资料 :unicode(65279) :叫“ZERO WIDTH NO-BREAK SPACE”即没有宽度的空格符,本质上也是null值,但是不同于null。byte-order mark(BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。说白了就是位于文本最前面用来标识该unicode编码的文本内容是以UTF-8、UTF-16或UTF-32编码的。通过查询发现windows的记事本程序在打开文本内容后会自动添加BOM.

 

       解决: 网上给出了二种方法,都是重新写文件去除utf-8文件的bom头去掉. 我使用的依靠编辑器 --> 另存,选择“UTF-8 - 无BOM”.

 

       相关: 

        js调试代码:

 

$.getJSON("php/login.php", data).done(function(d) {
	//do
}).fail(function(jqXHR, textStatus, errorThrown) {
	console.log('fail',textStatus,errorThrown);
	var ss = jqXHR.responseText;
	for(var f1 in ss){
	  console.log(f1,ss[f1],ss[f1].charCodeAt());
	}
});

 

 

 

 

php中隐形字符65279(utf-8的BOM头)问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号