массив json_encoded в строку utf8_encoded, запись в файл, файл должен быть utf8 - php - PullRequest
0 голосов
/ 05 июня 2018

здесь мой код:

$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 голосов
/ 05 июня 2018

Попробуйте использовать Порядок следования байтов .Это можно сделать следующим образом

<?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);
...