我正在编写一个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/

10-11 20:20