如何解决 PHP 输出 json 页面的时候,程序获取时前面有一个乱码字符的问题?

2017-02-13 18:54:31 +08:00
 hoythan

php 页面写了一个 array() 通过 json_encode() echo 出一个 json 字符串作为 api 页面.

然后发现这个页面在使用 c#程序获取的时候前面会多出一个字符,经过测试不是 utf-8 bom 这个东西,但是不知道如何解决...懵逼

5278 次点击
所在节点    PHP
29 条回复
NFSwind
2017-02-13 18:56:21 +08:00
你起码也贴一个截图啊
yov123456
2017-02-13 19:03:19 +08:00
我也有遇到… android 下解析不了…
helloccav
2017-02-13 19:03:59 +08:00
第一感觉就是 utf-8 bom ,可是你又说了不是这个问题,那就不知道是怎么回事了
iyaozhen
2017-02-13 19:04:18 +08:00
给的信息太少了。你现在说的这些正常情况下不会有问题
LevineChen
2017-02-13 19:07:03 +08:00
八成就是 bom 头, Unix 上用 curl 返回输出到一个文件上去 , hexdump 瞧眼
hoythan
2017-02-13 19:07:54 +08:00
@LevineChen 可是只有占一个字符串,而且我去除 bom 还是这样.
hoythan
2017-02-13 19:09:34 +08:00
@LevineChen
@yov123456
@NFSwind


ï 这玩意.
mcfog
2017-02-13 19:12:14 +08:00
楼主的代码啊, naïve
Sunyanzi
2017-02-13 19:12:52 +08:00
我估计就是你哪个文件没顶格 ... 如果你不会全文件查找什么的 ... 用 ob 系列函数把输出清了吧 ...
Felldeadbird
2017-02-13 20:34:06 +08:00
这个情况,通常是没转换编码。试下 mb_ 开头的转换函数处理一下,再输出 json 。
claysec
2017-02-14 09:19:09 +08:00
这样怎么解决问题。。。
hoythan
2017-02-14 09:41:53 +08:00
@claysec 我加了一个 ob_clear 不知道有没有用,有用再告诉你们...
BOYPT
2017-02-14 09:55:00 +08:00
echo 是不会输出不指定字符的,只可能出现在你的文件没顶格上;
按 16 进制查看你的乱码字符是什么,然后用 grep 去查出这个字符的出处,修改对应文件。
hoythan
2017-02-14 09:57:03 +08:00
@BOYPT 文件没顶格是什么意思?
BOYPT
2017-02-14 09:58:47 +08:00
@hoythan

php 文件在<?php 之前的所有字符都原样输出
hoythan
2017-02-14 10:07:19 +08:00
@BOYPT 这个肯定顶了,强迫症不允许我不顶
zhengkai
2017-02-14 10:10:56 +08:00
还有, PHP 结尾如果没其他东西不要写 ?>
hoythan
2017-02-14 10:26:52 +08:00
@zhengkai 也没写 直接 Exit 就没写任何东西了...
jarlyyn
2017-02-14 10:28:54 +08:00
找个地方加 header



然后 php 有个命令可以查的,什么地方有额外输出。
billychow
2017-02-14 10:29:23 +08:00
这个我碰到过…… 不知道是不是 TP 的锅,后来我在 nginx 的配置里加上 charset utf8; 就搞定了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/340206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX