当前位置:首页 > 开发 > 编程语言 > 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

    震惊

    震惊

编辑推荐
  最近有不少在微博上谈论BOM头问题,BOM头会造成页面展示的乱码,xml分析出现问题。而我恰巧遇到
1. 什么是BOM头 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标识该文件属于utf-8编码,现
比如 这次是碰到 CodeIgniter 使用了parser类库 去解析模板生成时,每个模板之间都会产生在 html源
今天编写web程序时出现一个Bug,如下面两个图所示: 在源代码中,代码的结构是没有问题的,而Firefo
  今天照着书随便写了段代码,代码意图是将字符串使用str_split()函数进行分割成数组,英文好说,
最近,在用file_get_contents函数来取得文本的内容的时候,出现了一个情况(如下),苦思冥想了n久
起因: 做项目的时候,需要根据条件数据生成静态的Html,下面是生成静态的Html /// <summary>
今天配置eclipse+PyDev,在配置的时候出现了问题,如下: python and jpython require at least ver
最近项目使用到ThinkPHP框架,其中一个页面顶部总是一小段空白。 如下图所示: 而且只会在chrome和e
1、字符编码、内码,顺带介绍汉字编码 字符必须编码后才能被计算机处理。计算机使用的缺省编码方式
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号