Так и должно быть. Если в массиве подаваемом в
json_encode есть недопустимые символы вроде кириллицы -
json_encode преобразует их в
UTF-8.
Для
json_encode вторым аргументов можно задать параметр
JSON_UNESCAPED_UNICODE - перестаёт кодировать многобайтные символы Unicode.
json_encode( $array, JSON_UNESCAPED_UNICODE ); // От PHP 5.4.0
По личной практике скажу - на некоторых проектах (с которыми я работал), весь проект использовал CP1251 (Windows-1251), из за этого
json_encode() может работать не корректно и тем более с параметром
JSON_UNESCAPED_UNICODE