Принятый ответ не сработает, если вы попытаетесь использовать код JSON где-то между выполнением страницы (например, в качестве плагина для некоторой CMS) или не сможете установить информацию заголовка. Но, конечно, заголовок страницы должен быть всегда установлен правильно.
Вы можете предоставить функции json_encode / json_decode дополнительные параметры, чтобы «заставить» ее использовать utf-8. Я создаю простой класс для этого и использую статические методы для получения моих результатов.
Ключом для этого является флаг JSON_UNESCAPED_UNICODE .
Используйте это так:
Класс данных
/*
Data Class
* * * * * * *
Encode and Decode Your String / Object / Array with utf-8 force.
*/
class Data {
// Encode
// @param $a Array Element to decode in JSON
public static function encode($a=[]){
$json = json_encode($a, JSON_UNESCAPED_UNICODE);
return $json;
}
// Decode
// @param $a JSON String
// @param $t Type of return (false = Array, true = Object)
public static function decode($a='', $t=false){
$obj = json_decode($a, $t, 512, JSON_UNESCAPED_UNICODE);
return $obj;
}
}
Использование
<code>// Get your JSON String
$some_json_string = file_get_contents(YOUR_URL);
// Decode as wish
$json_as_array = Data::decode($some_json_string);
$json_as_object = Data::decode($some_json_string, true);
// Debug / use your Content
echo "<pre>";
print_r($json_as_array);
print_r($json_as_object);
echo "
";