[英]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();
如果上面的第一行確實輸出了您的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
如果第一行仍然沒有輸出任何內容,那么第二行將允許您查看PHP的JSON編碼器內部發生的確切錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.