【问题标题】:php cannot read uft8 jsonphp无法读取uft8 json
【发布时间】:2017-12-05 08:59:47
【问题描述】:

我现在正在编写 Android 应用程序,这些应用程序将使用 json(utf8):

http://.....xxx.php?json=%7B%22name%22%3A%22peterchan%22%2C%22phone%22%3A%2212345678%22%2C%22password%22%3A%226kxhSJM6iLB0kZ9LZGCEUQ%3S%3D%0A%22%7D

xxx.php 就像:

<?php
    header("Content-Type:text/html; charset=utf-8");
    ini_set('default_charset', 'utf-8');
    $json = $_GET["json"];
    $obj = json_decode($json);
    $name = $obj -> {"name"};
    $phone = $obj -> {"phone"};
    $password = $obj -> {"password"};
    printf($json);
?>

但它返回: Warning: printf()xxx.php 中的参数太少

谁能帮帮我?请

【问题讨论】:

  • 如果你想创建一些东西,你应该使用POST......而GET只是为了检索......
  • 我可以举一些例子吗?对于 android,我找不到带有“put”JsonObject 的工作示例
  • printf()需要什么用?
  • 得到 json 后,我会将数据插入到 mysql DB 中
  • PUT 应该对您的数据进行全面更新。这是一个POST 示例

标签: php android json utf-8


【解决方案1】:

您应该验证 json_decode 不返回 null 并使用 json_last_error_msg 检查错误

您的密码以换行符结尾(也许它不应该存在),即 percent-encoded as %0A 这是无效的,因为 in JSON newlines must be escaped as \n 将被百分比编码为 %5Cn

演示:https://3v4l.org/vTM2r

$broke = '%7B%22name%22%3A%22peterchan%22%2C%22phone%22%3A%2212345678%22%2C%22password%22%3A%226kxhSJM6iLB0kZ9LZGCEUQ%3S%3D%0A%22%7D';
$fixed = '%7B%22name%22%3A%22peterchan%22%2C%22phone%22%3A%2212345678%22%2C%22password%22%3A%226kxhSJM6iLB0kZ9LZGCEUQ%3S%3D%5Cn%22%7D';

var_dump(urldecode($broke));
// string(80) "{"name":"peterchan","phone":"12345678","password":"6kxhSJM6iLB0kZ9LZGCEUQ%3S=
// "}"

var_dump(json_decode(urldecode($broke)));
// NULL

var_dump(urldecode($fixed));
// string(81) "{"name":"peterchan","phone":"12345678","password":"6kxhSJM6iLB0kZ9LZGCEUQ%3S=\n"}"

var_dump(json_decode(urldecode($fixed)));
// object(stdClass)#1 (3) {
//   ["name"]=>
//   string(9) "peterchan"
//   ["phone"]=>
//   string(8) "12345678"
//   ["password"]=>
//   string(27) "6kxhSJM6iLB0kZ9LZGCEUQ%3S=
// "
// }

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多