问题 json_encode,带选项JSON_UNESCAPED_UNICODE [关闭]


当使用echo json_encode($ array,JSON_UNESCAPED_UNICODE);

我收到了这个错误

警告:json_encode()正好需要1个参数,给定2个


3416
2018-03-21 09:12


起源

该 options 参数在PHP 5.3.0中添加。 - Pekka 웃
并在PHP 5.4.0中添加了JSON_UNESCAPED_UNICODE - Rok Jarc
这可能会有所帮助: stackoverflow.com/questions/16498286/... - shasi kanth


答案:


你的php版本可能太低了:

http://php.net/manual/en/function.json-encode.php

string json_encode ( mixed $value [, int $options = 0 ] )

5.3.0    The options parameter was added

7
2018-03-21 09:14



嗯好的,如果是这样的话我怎么能做同样的事情,但用不同的脚本 - Ben
在 php.net/manual/en/function.json-encode.php 有一个评论“简单替换JSON_UNESCAPED_UNICODE(例如PHP <5.4)” - biziclop
@EvenJohnson。 JSON_UNESCAPED_UNICODE 可能实际上并不是必需的。如果您的PHP版本太低,请不要使用它。 - TRiG
嗯,5赞成和“这个问题不太可能帮助任何未来的访客”:) - biziclop


见补丁 http://code.google.com/p/apns-php/issues/detail?id=22 它允许在PHP 5.2上使用相同的功能。

基本上运行这样的事情:

foreach ($array as &$val) {
    $val = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
        function($matches) {
            return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UTF-16');
        }, $val);
}

4
2017-07-31 07:12



即便如此,这在技术上也是错误的。 PHP 5.4也有一个错误,请参阅 PHP Bug#62010 json_decode产生无效的字节序列 - hakre
这不起作用 - user1775671