2017-04-11 98 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!你是對的 –