几天以来,我的服务无法使用我通过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:秒/ 115 6:一个/ 97 7:$ / 36 8:5/53 9:c / 99 10: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);
答案 0 :(得分:0)
我不确定,但可能是因为字符集尝试使用
header('Content-Type: text/html; charset=utf-8');
在您的文件中。
答案 1 :(得分:0)
我找到了解决方案,它是一个文件的字符集不正确(带有BOM的UTF8),我对该文件进行了转换,现在还可以。
感谢您的帮助