2016-03-18 77 views
2

我從客戶那裏得到了一個數據庫,需要創建一些邏輯,比如讀取和插入條目。列名中的特殊字符

當我嘗試了一些基本要求,如:

$json = array(); 
$query = "select * from tab1"; 

if ($result = $link->query ($query)) { 
    while ($row = $result->fetch_assoc()) { 
     array_push ($json, $row); 
    } 
} 

die (json_encode ($json)); 

,我意外的得到了一個空的響應。

直接從PHPMyAdmin執行相同的查詢,我得到了所有預期的結果。

當我剛剛甩了JSON結果在瀏覽器中,我注意到(摘錄):

... string(30) "ColumnName(�)" ... 

我花了一段時間才能發現,那還有列有一些特殊的字符名稱,如µ°。顯然,他們無法正確顯示,所以整個迴應變得無效,我沒有結果。

只要從列名稱中刪除這些字符即可解決問題。

是否有另一種解決方案,而不是隻是手動查找這些字符並將其刪除?

+0

有欄中將特殊字符沒有固有的問題名。你的代碼到底在幹什麼? – VoteyDisciple

+0

將連接字符集設置爲utf8(utf8mb4是mysql中真正的unicode字符集,因此如果需要,請使用該字符集),並將表名和列名置於反引號中。 –

回答

1

因爲json_encode()/json_decode()只涉及UTF-8編碼,你必須將所有非UTF8編碼的字符串UTF8

您可以使用utf8-encode() function