为什么WordPress默认不使用JSON_UNSCAPED_UNICODE?

时间:2020-03-10 作者:Bogdan

我发现了一件与JSON相关的奇怪事情,这取决于使用WordPress的站点语言。

例如,当站点语言设置为英语且您查看页面的源代码时,系统脚本如下所示:

var thickboxL10n = {"next":"Next >","prev":"< Prev","image":"Image","of":"of","close":"Close","noiframes":"This feature requires inline frames. You have iframes disabled or your browser does not support them.","loadingAnimation":"https:\\/\\/site.com\\/wp-includes\\/js\\/thickbox\\/loadingAnimation.gif"};
但是,当我将站点语言更改为俄语(或其他非拉丁语)时,我看到脚本变成这样:

var thickboxL10n = {"next":"\\u0414\\u0430\\u043b\\u0435\\u0435 \\u2192","prev":"\\u2190 \\u041d\\u0430\\u0437\\u0430\\u0434","image":"\\u0418\\u0437\\u043e\\u0431\\u0440\\u0430\\u0436\\u0435\\u043d\\u0438\\u0435","of":"\\u0438\\u0437","close":"\\u0417\\u0430\\u043a\\u0440\\u044b\\u0442\\u044c","noiframes":"\\u042d\\u0442\\u0430 \\u0444\\u0443\\u043d\\u043a\\u0446\\u0438\\u044f \\u0442\\u0440\\u0435\\u0431\\u0443\\u0435\\u0442 \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0438 \\u043f\\u043b\\u0430\\u0432\\u0430\\u044e\\u0449\\u0438\\u0445 \\u0444\\u0440\\u0435\\u0439\\u043c\\u043e\\u0432. \\u0423 \\u0432\\u0430\\u0441 \\u043e\\u0442\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u044b \\u0442\\u0435\\u0433\\u0438 iframe, \\u043b\\u0438\\u0431\\u043e \\u0432\\u0430\\u0448 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440 \\u0438\\u0445 \\u043d\\u0435 \\u043f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u0435\\u0442.","loadingAnimation":"https:\\/\\/krutygolov.pp.ua\\/wp-includes\\/js\\/thickbox\\/loadingAnimation.gif"};
我认为,这与wp_json_encode() 函数,用于JSON编码(不确定)。

有没有办法JSON_UNESCAPED_UNICODE 默认情况下在WordPress中?我想在源代码中看到Далее 代替\\u0414\\u0430\\u043b\\u0435\\u0435 或者JSON验证不是不可能的?

1 个回复
SO网友:Tom J Nowell

因为直到最近WordPress才支持PHP 5.2+,但该常量仅在PHP 5.4中添加。

鉴于此wp_json_encode 旨在封装和解释json_encode 在多个PHP版本中,仔细更改PHP 5.4的行为是没有意义的+

既然WordPress已经提高了它的最低PHP版本,那么您应该考虑打开一个带有补丁的Trac票证来添加常量,并说明为什么这是一个改进和测试说明

相关推荐

WordPress中的json解码问题-值返回不一致

我有一个json文件,我正在wordpress网站上显示其中的内容。这个问题源于这样一个事实,即我返回的一些值需要稍后进行排序,虽然该值作为文本进行回显,但撇号将显示为撇号,但是如果我在HTML中回显完全相同的值(如作为数据属性或javascript),它将作为单个引号返回。我需要这个值来返回相同的格式,无论它在哪里被回显。这是因为这些数据稍后将用于过滤大型数据表。<?php $content = file_get_contents(\'jsonfilepath\'); $x = json_