从MySQL的JSON打破

问题描述:

我有一个问题,存储在mysql文本字段中的json,事情是,一切都OK,直到我使用'(单引号)json然后保存\',每次我将它保存回来追加一个斜杠,如:\ '\\' \\”等从MySQL的JSON打破

则有些字符编码不正确\ u00e0

<div class="wpbs-calendar-legend" data-info="{&quot;default&quot;:{&quot;name&quot;:{&quot;default&quot;:&quot;Available&quot;,&quot;hr&quot;:&quot;Slobodno&quot;,&quot;cs&quot;:&quot;Volno&quot;,&quot;da&quot;:&quot;Ledigt&quot;,&quot;nl&quot;:&quot;Vrij&quot;,&quot;en&quot;:&quot;Available&quot;,&quot;fr&quot;:&quot;Libre&quot;,&quot;de&quot;:&quot;Frei&quot;,&quot;hu&quot;:&quot;Szabad&quot;,&quot;it&quot;:&quot;Libero&quot;,&quot;ro&quot;:&quot;Disponobil&quot;,&quot;ru&quot;:&quot;\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e&quot;,&quot;sk&quot;:&quot;Vo\u013en\u00fd&quot;,&quot;es&quot;:&quot;Libre&quot;,&quot;sv&quot;:&quot;Ledigt&quot;,&quot;uk&quot;:&quot;B\u0456\u043b\u044c\u043d\u043e&quot;,&quot;no&quot;:&quot;&quot;},&quot;color&quot;:&quot;#f1ffcc&quot;,&quot;splitColor&quot;:false,&quot;bookable&quot;:&quot;yes&quot;,&quot;auto-pending&quot;:&quot;no&quot;,&quot;sync&quot;:&quot;no&quot;},&quot;1&quot;:{&quot;name&quot;:{&quot;default&quot;:&quot;Booked&quot;,&quot;hr&quot;:&quot;Zauzeto&quot;,&quot;cs&quot;:&quot;Obsazeno&quot;,&quot;da&quot;:&quot;Booket&quot;,&quot;nl&quot;:&quot;Bezet&quot;,&quot;en&quot;:&quot;Booked&quot;,&quot;fr&quot;:&quot;Occup\u00e9&quot;,&quot;de&quot;:&quot;Belegt&quot;,&quot;hu&quot;:&quot;Foglalt&quot;,&quot;it&quot;:&quot;Prenotato&quot;,&quot;ro&quot;:&quot;Rezervat&quot;,&quot;ru&quot;:&quot;\u0417\u0430\u043d\u044f\u0442\u043e&quot;,&quot;sk&quot;:&quot;Obsaden\u00fd&quot;,&quot;es&quot;:&quot;Reservado&quot;,&quot;sv&quot;:&quot;Bokat&quot;,&quot;uk&quot;:&quot;\u0417\u0430\u0439\u043d\u044f\u0442\u043e&quot;,&quot;no&quot;:&quot;&quot;},&quot;color&quot;:&quot;#ff524c&quot;,&quot;splitColor&quot;:false,&quot;bookable&quot;:false,&quot;auto-pending&quot;:&quot;yes&quot;,&quot;sync&quot;:&quot;yes&quot;},&quot;2&quot;:{&quot;name&quot;:{&quot;en&quot;:&quot;>14H&quot;,&quot;nl&quot;:&quot;&quot;,&quot;et&quot;:&quot;&quot;,&quot;fi&quot;:&quot;&quot;,&quot;fr&quot;:&quot;D\u00e8s 14H&quot;,&quot;de&quot;:&quot;&quot;,&quot;pt&quot;:&quot;&quot;,&quot;ro&quot;:&quot;&quot;,&quot;default&quot;:&quot;D\u00e8s 14H&quot;},&quot;color&quot;:&quot;#f1ffcc&quot;,&quot;splitColor&quot;:&quot;#ff524c&quot;,&quot;bookable&quot;:&quot;yes&quot;,&quot;hide&quot;:false,&quot;auto-pending&quot;:&quot;no&quot;,&quot;sync&quot;:&quot;no&quot;},&quot;3&quot;:{&quot;name&quot;:{&quot;en&quot;:&quot;<12H&quot;,&quot;nl&quot;:&quot;&quot;,&quot;et&quot;:&quot;&quot;,&quot;fi&quot;:&quot;&quot;,&quot;fr&quot;:&quot;Jusqu\\" \u00e0="" 10h","de":"","pt":"","ro":"","default":"jusqu\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\u00e0="" 10h"},"color":"#ff524c","splitcolor":"#f1ffcc","bookable":"yes","hide":false,"auto-pending":"no","sync":"no"}}'=""></div> 

,在我insepct窗口如下所示:

developer console

我使用的是WordPress,所以这个json_encoded字符串使用update_option保存到数据库中。我试过对strip_heshes()在update_option上的json编码字符串,但没有解决问题。

有人可以帮助我吗?

感谢您的时间!

+0

的数据信息是htmlentity编码。 – Daniel

它看起来像你的SQL插入是逃避 - 非常正确 - 数据。

现在,当您需要从SQL获取数据时,您需要使用反斜杠删除转义。

因此,如果你的变量是$jsonResult使用它作为stripslashes($jsonResult)

+0

我已经试过了stripslashes,并没有解决我的问题,因为json_encoded字符串使用WordPress的update_option函数保存(需要编辑问题以反映我使用wordpress) –

+0

转义不起作用。添加斜杠,将结果发送到数据库,斜杠由SQL解析器使用,不包含在数据库中存储的数据中。 – Quentin

不,不是细节,不是细线。如果从json_encode()得到了JSON,使用一个额外的参数,以避免“统一”的编码:在

$x = json_encode($s, JSON_UNESCAPED_UNICODE); 

见例2 http://php.net/manual/en/function.json-encode.php (需要PHP 5.4.0)