我有一個stdClass
對象調用$post
,當通過print_r()
傾倒,返回如下:爲什麼這個PHP調用json_encode會失敗 - 無法處理單引號?
stdClass Object (
[ID] => 12981
[post_title] => Alumnus' Dinner Coming Soon
[post_parent] => 0
[post_date] => 2012-01-31 12:00:51
)
從調用該對象的結果json_encode()
在下面呼應結果:
{
"ID": "12981",
"post_title": null,
"post_parent": "0",
"post_date": "2012-01-31 12:00:51"
}
我假設某些單引號引起json_encode
嗆,但我不知道需要什麼格式才能逃脫。有任何想法嗎?
編輯:修正代碼示例中的不匹配。我運行PHP版本5.3.8
EDIT2:編碼對象後直接,我這樣做:
echo json_last_error() == JSON_ERROR_UTF8;
該印刷1
,這意味着發生瞭如下錯誤:「畸形的UTF-8字符,可能錯誤編碼「。 json_last_error()
編輯3:致電utf8_decode()
在帖子標題導致以下:「校友?晚餐即將來臨」。這些數據是從MySQL數據庫中提取的 - 特別是帖子標題是UTF-8編碼的文本字段。也許這個單引號是不正確的編碼?問題是,我有一個SQL GUI應用程序,並且它看起來是正確的。
[Works for me](http://codepad.viper-7.com/39Bmy6)...你運行的是哪個PHP版本?我注意到轉儲對象和'json_encode()'結果不匹配(「ID」不同) - 請驗證您的代碼示例是否正確。 – DaveRandom 2012-02-01 15:34:05
它也適用於我。當你設置post_title時,你是用雙引號(「」)來包圍它的嗎? – 2012-02-01 15:45:06
顯示該字符串的十六進制轉儲。 – Incognito 2012-02-01 15:47:35