json_encoded数组到utf8_encoded字符串,写入文件,文件应该是utf8 - php

时间:2018-06-05 20:07:11

标签: php json file utf-8 encode

这里是我的代码:

$array_test = array();

$array_test[0] = "test1";

$array_test[1] = "test2";

$array_test = json_encode($array_test);

$array_test = utf8_encode($array_test);

$myfile = fopen($Pfad, "w+");

file_put_contents($Pfad, $neueZeile, FILE_APPEND);

fclose($myfile)

问题在这里,当我这样写的时候,我会得到一个ANSI编码文件。

据我所知,如果我将UTF8编码的内容放入其中,该文件将被UTF8编码。

如果我utf8_encode一个简单的字符串它将工作,但不是整个json_encoded数组。

没有我被困,导致它的工作方式。如果我只是自己对数组内容进行utf8_encode,然后对其进行json_encode,那么该文件仍将设置为ANSI。

任何人都有一些想法,有没有办法,我能理解错误吗?

我尝试将整个加载读取和保存到文件的过程设置为utf8,但这使得我现在无法做到这一点。

感谢您阅读本文, 约瑟夫

1 个答案:

答案 0 :(得分:0)

尝试使用Byte Order Mark。这可以通过这种方式完成

<?php
$array = array("test1", "test2");

$json = json_encode($array);
$utf8_string = utf8_encode($json);
$utf8_w_bom = "\xEF\xBB\xBF" . $utf8_string; // Add BOM to the start of the string

file_put_contents($Pfad, $utf8_w_bom);