这是啥情况,看到的数据拿不到?
发布于 5 年前 作者 xiayuan 17727 次浏览 来自 问答

感觉有点凌乱,求大神指导

7 回复

data里面的数据是他们后台拼接的。小程序是不会处理的。

BOM: Byte Order Mark 
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉弱编辑器(记事本)当前文件采用何种编码,方便编辑器识别。

PHP在设计之初,没有考虑到BOM头的问题,因此很容易因为BOM头引发诡异的问题,比如编码转换失败,样式错乱等等问题,而且此问题相当隐蔽,很难确定发生问题的文件(试想在没有工具的情况下从上万的工程文件中找到哪个文件带有BOM头)。

 

BOM头是隐藏字符,非编辑字符,就像普通空文件一样,当我们写<?php的时候其实之前已经加了BOM头,如下(file.php):

  1. {BOM头}<?php 

  2.  

  3. ..... 

当file.php被其他文件包含时,由于BOM头在php标签外,会当作输出内容输出到浏览器,然后引发问题(如果用gbk察看  会看到三个乱码的字符)。

 

所以我们在开发过程中,得创建不包含BOM头的UTF8文件,具体见编辑器设置。对于上传文件,用代码截取BOM头即可

  1. if ( substr$data, 0, 3 ) == "\xEF\xBB\xBF" ){ 

  2.  $data=substr_replace( $data'', 0, 3 ) ; 

是include文件头有BOM字符,删除了就没事了。

代码本身没问题的。

楼上说法有误。

你这个肯定是因为你后台拼接的字符串对象格式有误,你应该仔细检查哪里不符合对象规范。

可以很负责的说,小程序拿到后台拼接的对象格式字符串是会自动转成对象的。

老代码了,看了下说是后台存在UTF8 bom

老代码了,莫名其妙出的错误。然后还报错:

Undefined property: stdClass

后台返回的字符串要转JSON对象才能取到。

回到顶部