簡體   English   中英

PHP通過JSON數組傳回帶有特殊字符的對象

[英]PHP passing back an object with special characters in JSON array

所有,我都有一個運行MYSQL查詢並將結果放置在數組中的php文件。 該表具有多個字段,一個字段包含字符'-'和'%'作為varchar字符串的一部分。 當我將其傳遞回JSON數組時,它就死了。 這是代碼部分。

PHP文件

// fetch merit guidelines
$meritGuideline = array();
$sql = "SELECT smg.id, year, ea.rating, ratioUpper, ratioLower, guideline, guidelineNum FROM spot_merit_guide smg JOIN epm_annual ea ON ea.id = smg.rating WHERE year = '$spotYear'";
$query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($query)) {
    $meritGuideline[] = $row;
}
mysqli_free_result($query);

然后我把它還給我

echo json_encode(array('meritGuideline' => $meritGuideline));

mysql表字段准則包含字符串0-4%。

首先,嘗試將數據編碼為UTF-8:

// fetch merit guidelines
$meritGuideline = array();
$sql = "SELECT smg.id, year, ea.rating, ratioUpper, ratioLower, guideline, guidelineNum FROM spot_merit_guide smg JOIN epm_annual ea ON ea.id = smg.rating WHERE year = '$spotYear'";
$query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($query)) {
    $meritGuideline[] = utf8_encode($row); // ENCODE TO UTF-8
}
mysqli_free_result($query);

然后運行此命令以進行調試:

echo json_encode(array('meritGuideline' => $meritGuideline));
echo 'Error: ' . json_last_error_msg();
  1. 如果上面的第一行確實輸出了您的JSON,則問題很可能是隱藏的僅UTF-8的特殊/不可見空格字符,當在瀏覽器中處理JSON編碼甚至Javascript代碼時,這通常是調皮的。 以下是這些“特殊”空格字符的一些示例:

    不間斷空格: http : //www.fileformat.info/info/unicode/char/00a0/index.htm

    零寬度空間: http//www.fileformat.info/info/unicode/char/200b/index.htm

  2. 如果第一行仍然沒有輸出任何內容,那么第二行將允許您查看PHP的JSON編碼器內部發生的確切錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM