我正在编写一个WP插件,该插件连接到另一个WP网站,并获得一些数据作为回报(一些强大的条目,名称和其他内容)。
一切正常,我的插件基本上可以正常工作-但我今天注意到它存在一些奇怪的编码问题-我生活在北欧国家,因此名字很普遍。
我已经调试了过去2个小时,但似乎无法弄清楚出了什么问题。
**Data path:**
End-point -> Plugin - \00f8
Data received - \u00f8
Data saved - u00f8
我用以下代码接收数据:
$aDataRecevied = json_decode(oaal_CallEndpointAPI('GET', 'xxxxxx.dedi2491.your-server.de/wp-json/oaeu/v1/api', $aDataSend));
$sFrmEntriesRecevied = $aDataRecevied->sData->aFrmEntries;
然后我找到我的自定义WP帖子,并使用以下命令将其添加/更新保存到该帖子中:
update_post_meta($iPost_ID, "aFrmEntries", json_encode($aFrmEntries), "");
数据库正在运行:InnoDB和utf8mb4_unicode_ci,但我非常有信心这不会成为问题(?)
我不太确定这是怎么回事,但我希望有人有一个主意
插件从端点获取的字符串如下所示:
{"64":"H\u00f8jb","65":"Hansen","66":"[email protected]","date_created":"2016-11-21 13:11:26","form_id":"6"}
编辑
当我将数据保存到数据库时,显然WP被\删除了
最佳答案
所以我想通了!问题是WP转义了\ u00f8,以使其更安全-遗憾的是,这具有\ u00f8将变为u00f8的副作用。
我通过简单地确保在保存数据之前将其转换为øæå来解决此问题:
$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $str);
致以敬意:https://stackoverflow.com/a/2934602/7166130
关于php - PHP-\u00f8(ø)变成u00f8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40861959/