微信接口,返回ASCII码,json_encode后出现null
2016-09-30 10:48
225 查看
昨天解决客户的一个问题,描述下问题:
客户通过微信获取用户基本信息接口,来获取用户信息,接口地址:http请求方式: GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
返回的json中,emoji表情等,这些字符还好。在city,province,country字段中,出现了“FS”这种ASCII码。。。查看我的这些字段,是不可以自定义的,只能是太原,山西,中国。可能早起的用户,允许自己填写吧。
这个问题,还真不好找。。。我在浏览器上调试,怎么都看不出来。后来将内容复制到编辑器中,才发现了这个“不可见字符”,如下是截图:
我这是对编码啦,字符啊,之类的,几乎不懂,以前也是瞎看了些资料,当时可能觉得明白了,也没有总结过,所以忘的一干二净,包括以前资料的地址都忘记了。所以得总结下来!经自己手书过,印象更深点!
紧接着,如何解决??说下自己的思路,要我想编码算法等,完全是不可能。非计算机专业,培训php3个月,对操作系统,算法,数据结构,tcp/IP协议 基本没啥了解,不可能写出啥高深的东西(我也不想否定自己,不过在这行,真还算是新手,虽然已工作2年半了。。)
1.进php手册,查看字符串操作函数,挨着迅速看一遍,有些东西是孰能生巧的(手册这东西真的有时间得多看,起码都知道php能干什么-我也一直是这么想的,不过也一直没看。。)
2.找到
bin2hex —
函数把ASCII字符的字符串转换为十六进制值
hex2bin() -
转换十六进制字符串为二进制字符串
想到的肯定是,先匹配出来对应的值,转码后,等json结束后,再反转回来即可。下面是解决方案的截图:
这里为了更安全点,加了个实体转换,防止有问题。
这个只是个小问题,针对遇到的这个问题,搜索了下ASCII码,以前一直没怎么细看。这次详细的看了看。参考了2个地址:
http://blog.csdn.net/stpeace/article/details/51619704 http://tool.oschina.net/commons
我也得将第二个地址中总结的几个对照表,转到我博客中,防止遗忘地址,就新建一个编码分类好了:
常用对照表,点击查看即可。
相关文章推荐
- PHP json_encode返回的json前端获取时出现unicode转码和反斜杠\导致无法解析的解决办法
- Spring不希望返回的Json为null的字段出现的方法
- php 接口 增删改查 返回json_encode 数据
- json_encode不对中文进行转码、json_decode解析json字符串返回NULL的处理方法
- iOS 之后台返回json解析出现的null的解决办法、nil、Nil、NSULL、NULL之间的区别、野指针、内存泄漏、僵尸对象
- spring-webmvc-4.1.6 接口返回json数据 中文出现\u0000\u0000\u0000\u0000
- 向SQL Server2005中导入数据出现“SQL 错误描述为: 链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].field' 无效的数据”解决方案
- springMVC返回json,出现时Null属性不显示的解决方法
- iOS 后台返回json解析出现的null的解决办法
- 向SQL Server2005里导入数据是出现错误“SQL 错误描述为: 链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].field' 无效的数据”
- PHP中json_encode返回null的原因
- 导入导出数据库数据,报错,链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "未指定的错误"。
- ajaxfileupload以JSON为返回数据类型出现的因符号无法解析的错误的解决方案
- 解决MsSQLServer导入数据时遇到【“链接服务器 '(null)' 的 OLE DB 访问接口 'STREAM' 返回了对列 '[!BulkInsert].2SB553' 无效的数据。】
- 中国天气网接口 返回json格式分析说明
- 程序调试时用到的XML或者JSON数据接口(支持返回图片信息)
- php对post数据进行json_decode返回null
- 链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "未指定的错误"。
- 链接服务器"(null)"的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 返回了消息 "未指定的错误
- 链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].field' 无效的数据