2017-04-11 93 views
0

我在PHP脚本,从一个表中读取DDBB,设置一个JSON和 通过卷曲发,但端点接收字符,例如重音错误错误 (acutes)。JSON通过卷曲sended有utf8mb4数据

1)首先,我连接到BBDD和设置的字符集:

$conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME) or die("Error " . mysqli_error($con)); 
mysqli_set_charset($conn,"utf8mb4"); 

数据库归类为utf8mb4_unicode_ci我不能改变该

2)I生成数组与信息:

$arr_json = array(); 
$array_json['key'] = htmlentities("Más"); 
[...] 

3)一旦被解决,从阵列创建JSON:

$arr_json = json_encode($arr_json,JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); 

4)最后,我发信息:

curl_setopt_array($curl, array(
     CURLOPT_URL => URL, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_ENCODING => "", 
     CURLOPT_MAXREDIRS => 10, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
     CURLOPT_CUSTOMREQUEST => "POST", 
     CURLOPT_POSTFIELDS => $arr_json, 
     CURLOPT_HTTPHEADER => array(
     "cache-control: no-cache", 
     "content-type: application/json", 
    ), 
    )); 

我收到代码,但API的endoint总是收到错误的输入,例如一个前值:

'Más' 

这将是:

'Más' 

PHP脚本文件是UTF-8,并且数据库中的信息被正确存储。有任何想法吗?

+0

@SahilGulati怎么可能? CURLOPT_HTTPHEADER中的字符集? –

回答

1

JSON和卷曲什么都没有做这个,你在这里明确转义字符:

$array_json['key'] = htmlentities("Más"); 

那会使"Más"'Más'

+0

Ups!你是对的 –