Skip to content
Advertisement

json_encode returns NULL, json_last_error_msg gives “Control character error, possibly incorrectly encoded”

The file looks fine when read into my editor.

$file = file_get_contents('path/to/file.json');
$json =  json_decode($file, true);
var_dump($json); // null
echo json_last_error_msg(); //Control character error, possibly incorrectly encoded

There isn’t much out there on what this error message means.

Advertisement

Answer

you can remove the control character, PCRE supports the POSIX notation for character classes [:cntrl:]

$json = preg_replace('/[[:cntrl:]]/', '', $json);
$json = json_decode($json, true);
var_dump($json);
echo json_last_error_msg();
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement