Ofi*_*fir 4 php json encode utf-8
我正在使用PHP(5.3.1)中的一个项目,我需要将一个JSON字符串发送到webservice(在python中),但是我从json_encode获得的结果不会作为有效的JSON传递(我正在使用JSLint)检查有效性).
我应该补充一点,我正在尝试编码的结构相当大(13K编码),并且部分由UTF8数据组成,而json_encode确实处理它,我在结果中的奇怪位置获得空格.例如,我可以获得{"hello":tru e}或{"hell o":true},这会导致Web服务出错,因为JSON无效(或数据,如第二个示例中所示).
我也尝试使用Zend框架进行JSON编码,但这并没有太大的不同.
PHP中的JSON是否存在已知问题?有没有人遇到过这种行为并找到了解决方案?
确保对象键不能包含空格或任何非unicode字符,不带引号的变量只能是布尔值,整数,浮点数,对象和数组值,应始终引用字符串.
另外,我建议你在json输出之前添加正确的标题.
if(!headers_sent())
header('Content-Type: application/json; charset=utf-8', true,200);
Run Code Online (Sandbox Code Playgroud)
你也可以发布你传递给你的数组或对象json_encode吗?
您声明"我正在尝试编码的结构......部分由UTF8数据组成." 这意味着它也部分是非UTF8数据.该json_encode文档底部有一个评论
json_encode()期望字符串被编码为UTF8格式,而默认情况下PHP字符串是ISO-8859-1编码的.这意味着
json_encode(阵列( 'AU'));
将产生一个空字符串的json表示,而
json_encode(阵列(函数utf8_encode( 'AU')));
将工作.
由于非UTF8输入,JSON的失败段是?
前几天我正在处理一些自动生成的电子邮件,并注意到同样的奇怪行为(电子邮件正文中插入了空格),所以我开始检查电子邮件帖子并找到了罪魁祸首:
来自 SMTP RFC2821:
包含 的文本行的最大总长度为 1000 个字符(不包括为透明度而重复的前导点)。
我的电子邮件正文确实在一行中,因此用 \n 打破它解决了空格问题。
| 归档时间: |
|
| 查看次数: |
18053 次 |
| 最近记录: |