JSON_encode与JSON_UNESCAPED_UNICODE无法正常工作

时间:2016-03-18 10:40:56

标签: php json

我正在尝试使用PHP操作JSON文件并遇到问题,即函数

$json = json_encode($cd, JSON_UNESCAPED_UNICODE);

无法正常工作。

代码:

    <?php 
    $contents = file_get_contents('file.json');
    $ut=  utf8_encode($contents);
    $cd = json_decode($ut, true);        
    $cd['File'][0]['Name']="AnotherName"; 
    $json = json_encode($cd, JSON_UNESCAPED_UNICODE);
    file_put_contents('general.json', $json);
    ?>

操作正在进行,但是有一些ä,ö,ü和/符号,它们在输出文件中更改为¤...和/。有没有办法解决这个问题?

由于

1 个答案:

答案 0 :(得分:1)

假设您的file.json包含以UTF-8编码的实际有效JSON,您唯一的问题是您在编码时使用utf8_encode搞乱了编码。 utf8_encode 从ISO-8859-1 转换为UTF-8,这是不必要的,因为您的输入不是ISO-8859-1。该问题与json_encode函数无关。

考虑阅读What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text