Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Pepsy
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
1

PHP json_decode() выдает пустоту при подаче в него русских символов

26.06.2016, 02:39. Просмотров 978. Ответов 3
Метки нет (Все метки)

Если выполнить код
PHP
1
2
$text='{"parameter1":"asdas","parameter2":"фыв"}';
var_dump(json_decode($text));
но если на сервер идет запрос с такими заголовками
Content-Type: application/json
Content-Encoding: gzip
и таким содержанием
{"action":"asd","data":"sdfasыавфыва"}
то
PHP
1
2
$a = file_get_contents("php://input");
var_dump(json_decode($a));
выдает NULL(если нету кириллицы, то все нормально).
Как это решить?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 02:39
Ответы с готовыми решениями:

CURL работает при подаче запроса на локальный сервер, но при подаче запроса во вне выдает пустую страницу
Собственно, вот код: error_reporting(E_ALL); $c = curl_init(); curl_setopt($c,CURLOPT_URL,...

Json_decode возвращает пустоту вместо false
Добрый день. Подскажите, при преобразовании json_decode получаю вместо false пустоту. Как побороть ?

PHP выводит знаки вопросов вместо русских символов с таблицы mySQL
Доброго времени суток! Сколько гуглил, сколько разного перепрбывал, ничего не помогло.......

Проблемы при перекодировке русских символов
Я пишу клиент-серверное приложение. Клиентское приложение пишу в netbeans, серверное в эклипсе. ...

Ошибка при вводе русских символов
Почему при вводе русских символов выпадает ошибка? familya: std::cout << "Введите...

3
edward_freedom
1557 / 1436 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
26.06.2016, 08:47 2
Pepsy, Попробуй добавить
PHP
1
JSON_UNESCAPED_UNICODE
0
Pepsy
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
26.06.2016, 08:53  [ТС] 3
edward_freedom, это срабатывает только при json_encode, а в json_decode в options поддерживается только
Битовая маска опций декодирования JSON. В настоящий момент поддерживается только JSON_BIGINT_AS_STRING (по умолчанию большие целые числа приводятся к числам с плавающей запятой (float))
(http://php.net/manual/ru/function.json-decode.php)
0
edward_freedom
1557 / 1436 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
26.06.2016, 09:22 4
Лучший ответ Сообщение было отмечено Pepsy как решение

Решение

Pepsy,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function convert( $from, $to, $var ) {
    if ( is_array( $var ) ) {
        $new = array();
        foreach ( $var as $key => $val ) {
            $new[convert( $from, $to, $key )] = convert( $from, $to, $val );
        }
        $var = $new;
    } else if ( is_string( $var ) ) {
        $var = iconv( $from, $to, $var );
    }
    return $var;
}
 
$text = '{"parameter1":"asdas","parameter2":"фыв"}';
$json = json_decode( convert( 'cp1251', 'utf-8', $text ) );
var_dump( json_decode( $text ) );
Добавлено через 19 минут
Pepsy, Проверил у себя, без каких либо манипуляций
PHP
1
2
$text = '{"parameter1":"asdas","parameter2":"фыв"}';
var_dump( json_decode( $text ) );
Выводит
object(stdClass)#1 (2) { ["parameter1"]=> string(5) "asdas" ["parameter2"]=> string(6) "фыв" }
Попробуй еще
PHP
1
2
3
4
5
6
7
8
function utf8_urldecode($str) {
    $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
    return html_entity_decode($str,null,'UTF-8');;
}
 
$text = '{"parameter1":"asdas","parameter2":"фыв"}';
$json = json_decode( utf8_urldecode(  $text ) );
var_dump( $json );
1
26.06.2016, 09:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2016, 09:22

Кракозябры в бд при записи русских символов
Прошу помочь, не понимаю в чем дело, записываю в бд отправленные данных из формы на сайте, и все...

Ругается при добавлении русских символов
Работаю с InterBase при добавлении в тектовые поля латиницы все нормально, но когда отправляю...

Json_decode и json_encode в php
Всем привет! Создаем массив $result = array('id' => "44", 'datetime' => "28.12.2014", 'ip' =>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru