Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вместо знаком препинания выводит проценты и цифры. Сокеты / 12 сообщений из 12, страница 1 из 1
21.03.2014, 13:31
    #38592866
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Вот такой вот код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?php
	
	$fp = fsockopen("tcp://127.0.0.1", 3128, $errno, $errstr, 30);
	if (!$fp) {
    echo "ERROR: $errno - $errstr
\n";
} else {
	fwrite($fp, '{"jsonrpc":"2.0","id":"1346999224565","method":"Получить перечень услуг"}');
	while (!feof($fp)) {
		$data.=fread($fp,1024);
	}	
	echo $data;
	
	echo "<br/>";
	echo 'Norm';
}
	fclose($fp);

?>



Хочу просто получить строчку с результатом. Она как бы возвращается, но вместо всех скобок, запятых или кавычек возвращается код Ansi в виде: %22%, к примеру. То есть значения есть а между ними появляется последовательность из этих цифр и знаков %.
Кодировка одинаковая и на сервере и у меня в скрипте. Из за чего еще такое может быть?
...
Рейтинг: 0 / 0
21.03.2014, 13:53
    #38592890
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
И кстати вместо русских букв такая же фигня
...
Рейтинг: 0 / 0
21.03.2014, 13:55
    #38592899
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Воспользовался этой функцией iconv(). НЕ помогло =(
...
Рейтинг: 0 / 0
21.03.2014, 14:26
    #38592936
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Denchik58,

urldecode ?
...
Рейтинг: 0 / 0
21.03.2014, 14:34
    #38592955
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
artas,
Точняк=)
В сочетании с iconv() все выводит как надо)
Благодарю
...
Рейтинг: 0 / 0
21.03.2014, 15:59
    #38593079
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
А теперь возник вопрос по полученной строке=) Вот например имеется она у меня:


Код: php
1.
$l = '{"result":{"self_services":[{"id":2,"waiting":0,"service_name":"Услуга","priority":1,"flexy":false}],"postponed":[],"limit_remove":0,"shadow":{"id_old_service":2,"id_old_customer":1395396173806,"old_nom":2,"old_pref":"А","old_fin_time":"21.03.2014 13:07:42","old_cust_state":"STATE_FINISH"}},"jsonrpc":"2.0","id":"1395400946321"}';



Хочу декодировать эту строку, чтобы взять к примеру id. Делаю следующее:
Код: php
1.
2.
var_dump(json_decode($l));
	var_dump(json_decode($l, true));



В обоих случаях значения null.
Что я не так сделал?Может кто нибудь знает
...
Рейтинг: 0 / 0
21.03.2014, 16:10
    #38593091
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
авторNULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.
http://www.php.net/manual/en/function.json-decode.php

включи отображение ошибок.
...
Рейтинг: 0 / 0
21.03.2014, 16:11
    #38593093
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
...
Рейтинг: 0 / 0
21.03.2014, 16:23
    #38593107
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Сделал чтоб ошибоньки видно было. Сначала поругался на кодировку, поменял ее. Теперь говорит, что у меня некорректный json.
Хотя несколько раз все перепроверял, написал верно. Д и в этой утилите проверял, тоже ошибок нет: http://www.bodurov.com/JsonFormatter/
...
Рейтинг: 0 / 0
21.03.2014, 16:27
    #38593109
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Denchik58,

попробуйте ткую же строку без русских букв распарсить. А то на вид json коректная
...
Рейтинг: 0 / 0
21.03.2014, 16:34
    #38593116
Denchik58
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Ренат,
Попробовал. Результат тот же.
...
Рейтинг: 0 / 0
21.03.2014, 16:55
    #38593146
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вместо знаком препинания выводит проценты и цифры. Сокеты
Denchik58,

Копайте в сторону utf8 -> BOM, ну а само решение проблемы очень простое
Код: php
1.
2.
3.
4.
// Строка в utf8
$l = '{"result":{"self_services":[{"id":2,"waiting":0,"service_name":"Услуга","priority":1,"flexy":false}],"postponed":[],"limit_remove":0,"shadow":{"id_old_service":2,"id_old_customer":1395396173806,"old_nom":2,"old_pref":"А","old_fin_time":"21.03.2014 13:07:42","old_cust_state":"STATE_FINISH"}},"jsonrpc":"2.0","id":"1395400946321"}';

var_dump(json_decode(substr($l,3)));
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вместо знаком препинания выводит проценты и цифры. Сокеты / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]