如何为json_encode选择正确的字符集,以便JSON_UNESCAPED_UNICODE不是needet

时间:2017-11-06 15:22:56

标签: php unicode utf-8 character-encoding

我真的很擅长使用JSON格式。我学到了很多东西 - 而且我仍然坚持使用UNICODE。我有一个字符串$str='Läuse';

如果我查看字符串是什么字符集,我使用echo mb_detect_encoding($str); 结果是UTF-8。现在我创建一个数组并再次检测charset是UTF-8

 $json_array = [
        'test' => $str
    ];
    echo mb_detect_encoding($json_array['test']);

当我用json_encode回显数组时,它来到{"test":"L\u00e4use"}而不是{"test":"Läuse"}

在搜索和阅读了很多关于php和unicode之后,我越来越困惑。 我知道JSON_UNESCAPED_UNICODE会根据需要输出我的json_encode。

我的问题是,我做错了,我必须使用JSON_UNESCAPED_UNICODE吗?我使用错误的字符集吗?

希望你能帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

PHP只是默认输出兼容ASCII的JSON,这种JSON不太可能因编码错误而受到损害(尽管它以可读性和一些字节为代价)。

你没有做错任何事。 JSON_UNESCAPED_UNICODE默认情况下已关闭。