php json decode無法解析特殊問好字元

2021-09-08 22:52:03 字數 534 閱讀 1918

在通過別人介面請求資訊的時候,偶爾會遇到由於部分字元,如以下情況,則通過json_decode是會返回null的

但是這種情況通常不是由於整體編碼的問題,因為在解析的時候就是以utf-8的編碼解析的

這種情況通常會是中英文並存,但是部分空白字元無法識別。

通過對系統邏輯的觀察,應該是由於前段儲存字元的時候出現了非utf-8能夠識別的字元,這種情況在json_encode中並不受影響,所以直接導致了介面獲取資料的時候出現非法字元

解決方案:

$return_data=mb_convert_encoding($return_data, "utf-8","utf-8");
對通過curl請求回來的字元在進行一次強制編碼,這種情況下原本的utf-8編碼的文字不會受到影響,同時utf-8無法識別的字元將會被強制解析,解析出來之後的字元就會變成英文符號的? ,

這樣就能夠順利的json_decode 了

php json decode解釋失敗

但是php在設計之初並沒有考慮到bom頭的問題,所以在編譯碼的時候很容易出現問題 比如今天遇到的問題,json decode,當解碼的string有bom頭的時候json decode就解析失敗,返回null。為什麼不自動檢測並去除bom頭呢。小吐槽 試了兩種方式能去除掉 result trim r...

PHP json decode最大深度限制

php在json decode長json串時有最大深度的限制 在轉換層級比較多的json字串時,會失敗返回空。json decode string json bool assoc false int depth 512 int options 0 mixed引數 待解碼的jsonstring 格式的...

PHP json decode中文轉義的問題

預設情況下php的 json decode 方法會把特殊字元進行轉義,還會把中文轉為unicode編碼形式。在有些情況下不希望進行這種轉義。對於php5.4 版本,json decode函式第二個引數,可以用來限制轉義範圍。要限制中文,使用json unescaped unicode引數。json ...