【问题标题】:Extra characters on php json returnphp json返回的额外字符
【发布时间】:2017-08-31 04:02:09
【问题描述】:

我需要从 php 返回 json 对象,这是我的代码:

      $resultFromDB = PerformTransaction($requestToDB);
      if($resultFromDB['status'] == '0'){
        $myReturn = array('status' => '0','message' => 'success');
        header('Content-Type: application/json');
        $json_result = json_encode($myReturn,JSON_UNESCAPED_UNICODE);
        echo trim($json_result,'');
      }else{
        $myReturn = array(
            'status'  => $resultFromDB['status'],
            'message'   => $resultFromDB['errorMsg']
          );
        header('Content-Type: application/json');
        echo json_encode($return,JSON_UNESCAPED_UNICODE);
      }

当函数的结果状态 = 0 时,该代码的结果应该是:

{"status":"0","message":"success"}

当通过 Idea IntellIJ Test RESTful webservice 发送时,我得到了结果:


{"status":"0","message":"success"}

如何正确返回结果,我不会有多余的字符

【问题讨论】:

  • 在header('Content-Type: application/json')之前添加函数ob_clean();

标签: php json rest


【解决方案1】:

我自己以前在 Windows 上使用 Notepad Plus Plus 时遇到过这个问题。我能够通过确保文件开头没有空格并检查它是否为 UTF-8 without BOM(通过菜单 Encoding > Convert to UTF-8)来解决错误。

确保文件的开头没有字符,您可以使用 Notepad Plus Plus 的十六进制插件来执行此操作,如果在开头有任何十六进制字符,每个字符将在开头引用十六进制字符一个引用你的第一个字符,删除它们。

您必须对所有 PHP 文件执行此操作,但没有 BOM 的 UTF-8 是 commonly regarded 作为 PHP 的正确编码。

一旦你检查了这一切,我希望你应该不再有这个问题。

【讨论】:

  • 这不是一个可编程的答案。每次从源检索数据时,您都必须手动执行此操作。
  • 是的,因为字符不是来自数据源(在这种情况下似乎是数据库),而是来自编码错误的 PHP 文件。将编码更改为不带 BOM 的 UTF-8 将解决此问题。如果它来自某个来源,因为某些第 3 方在发货之前没有检查他们的代码,无论出于何种原因,那么只需修剪左边的字符,直到获得所需的效果(我希望是 4字符,因为我认为那里也有隐形)。 stackoverflow.com/questions/4286423
猜你喜欢
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2010-12-05
  • 1970-01-01
  • 2017-06-28
  • 2010-10-21
相关资源
最近更新 更多