JSON 編碼和特殊字元
使用json_encode() 函數對陣列進行編碼時,可能會發生包含特殊字元的元素被轉換為空字串。對於版權或商標符號等字符,此行為尤其明顯。
要解決此問題,請確保所有字串資料在編碼為 JSON 之前均採用 UTF-8 編碼。這可以透過將 array_map() 與 utf8_encode() 函數結合使用來實現:
<code class="php">$arr = array_map('utf8_encode', $arr); $json = json_encode($arr);</code>
如 PHP 手冊中所述,json_encode() 要求所有字串資料都採用 UTF-8 編碼。透過在 JSON 編碼之前將陣列元素編碼為 UTF-8,我們確保特殊字元在 JSON 輸出中正確表示。
為了清楚起見,讓我們比較使用和不使用UTF-8 編碼數組的結果編碼:
不使用UTF-8 編碼:
<code class="php">$arr = ["funds" => "ComStage STOXX®Europe 600 Techn NR ETF"]; $json = json_encode($arr); // {"funds":null}</code>
使用UTF-8 編碼:
<code class="php">$arr = array_map('utf8_encode', ["funds" => "ComStage STOXX®Europe 600 Techn NR ETF"]); $json = json_encode($arr); // {"funds":"ComStage STOXX\u00c2\u00aeEurope 600 Techn NR ETF"}</code>
透過應用UTF-8 編碼,特殊字元可以在JSON 輸出中正確表示。請記住一致使用 utf8_encode() 以獲得正確的編碼。
以上是如何使用 PHP 的 json_encode() 函數正確編碼 JSON 中的特殊字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!