почему мой API отдыха получает недопустимые символы? - PullRequest
0 голосов
/ 26 декабря 2018

Поскольку в некоторые дни мой сервис не может использовать информацию, которую он получает с помощью моего API. JSON правильно сформирован, но когда строка получает file_get_contents, он добавляет некоторый символ перед строкой.Я закончил, обнаружив, что эти недопустимые символы - ascii 239,187,191 Почему это меняет это?Что я могу сделать, чтобы избежать этой проблемы?

Сервер - уродливый сервер Windows, я думаю, что этот ужас исходит отсюда, но не уверен, я не являюсь его владельцем.API находится на codeigniter, а не создан мной, а клиент на моей собственной платформе.

Если я ищу в ответе этот код:

    $test = file_get_contents($test);
    for($i = 0 ; $i < strlen($test); $i++)
    {
        echo $i;
        echo " : ";
        echo $test[$i];
        echo " / ";
        echo ord($test[$i]);
        echo "<br>";
    }


    die;

У меня есть такой результат:0: � / 239 1: � / 187 2: � / 191 3: c / 99 4: b / 98 5: s / 115 6: a / 97 7: $ / 36 8: 5/53 9: c / 9910: 2/50 11: 3/51

сторона API:

public function listeDossiers($token, $year, $month)
{
    $token=$this->hexToStr($token);

    $token = substr($token,3);
    $connexion = $this->ConnLabo_model->findByToken($token);

    if($connexion !== null){
        header('content-type:application/json');
        $liste = json_encode($this->RendezVous_model->findByLabo($connexion->id_user, $year, $month) );
        echo $liste;
        return;
    }


}

сторона клиента

    $this->view->setTpl('Liste');
    $this->layout->year=$year;
    $this->layout->month=$month;
    $file = $this->restConfig['server'] . "/listeDossiers/" . $this->strToHex(trim($_SESSION['token'])) . '/' . $year . '/' . $month;
    //var_dump($file);die;
    $file = file_get_contents($this->restConfig['server'] . "/listeDossiers/" . $this->strToHex(trim($_SESSION['token'])) . '/' . $year . '/' . $month ) ;
    $this->view->liste = json_decode( $file);

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Я нашел решение, это был файл с плохой кодировкой (UTF8 с BOM), я преобразовал этот файл, и теперь все в порядке.

Спасибо за помощь

0 голосов
/ 26 декабря 2018

Я не уверен, но, возможно, эта проблема связана с charset попыткой использовать

header('Content-Type: text/html; charset=utf-8');

в вашем файле.

...