|
|
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
В БД записана JSONстрока Её var_dump выдает: string(137) "[{"description":"Средняя стоимость работ","cost":"","currency":2}]" json_decode вызывает NULL Копируем эту строку и вставляем напрямую в var_dump. Уже получается: string(87) "[{"description":"Средняя стоимость работ","cost":"","currency":2}]" json_decode возвращает массив. Данные кодируются JS в JSON с помощью JSON.stringify(data) или encodeURIComponent(JSON.stringify(data)) (без разницы), хранятся в БД в поле text utf8_unicode_ci, т.к. varchar слишком маленький для них Что за дела такие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 09:17 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2var_dump выдает: string( 137 ) Shitbox2Копируем эту строку и вставляем напрямую в var_dump. Уже получается: string( 87 ) Как то оно странно скопировалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 09:30 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Выделилось в браузере и скопировалось. Визуально строки идентичны. Понятно, что в БД что-то в 1,5 раза раздувает строку. Что? И как это убрать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 09:47 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2Выделилось в браузере и скопировалось. Визуально строки идентичны. Понятно, что в БД что-то в 1,5 раза раздувает строку. Что? И как это убрать? думаю кодировка... сам скрипт php в какой кодировке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 10:01 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Кстати... И ещё вопрос в какой кодировке читается значение из базы (просто вероятно, что сначала надо вызвать что-то типа SET NAMES UTF8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 10:24 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Везде UTF-8 Выяснил, что на этапе передачи из JS такая фигня приходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:04 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2Везде UTF-8 Выяснил, что на этапе передачи из JS такая фигня приходит... Shitbox2 ранееВ БД записана JSONстрока ... Сформулируй нормально что ты делаешь, и что получается. Сначала ты её из БД берёшь, потом оказывается из js передаёшь. Если всё-таки используется ajax, то надо помнить, что он работает только в utf8, а значит если страница загрузилась в cp1251 (по любой из десятка возможных причин), то и данные уйдут в cp1251 и соответственно прийдут уже крякозябры (кодировка выбрана наиболее вероятная, может быть и другая) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:29 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
JSON_ERROR_CTRL_CHAR выдает, а сама строка выглядит так: [{"description":"Средняя стоимость работ","cost":"34","currency":2}] Причем, не зависимо от того использую ли encodeURIComponent или нет. Это странно, т.к. в другом случае связка encodeURIComponent(JSON.stringify(data)) -> json_decode(data, true) работает без проблем. Правда в этом случае данные еще прогоняются транзитом через плагин http://malsup.github.com/jquery.form.js, возможно он что-то меняет. Как это узнать? Какая функция в JS может так пакостить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:30 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
кстати, в строке "[{"description":"Средняя стоимость работ","cost":"","currency":2}]" - 66 символов. Так что всё это вообще странно как-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:39 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Вы смотрите результат в обозревателе как HTML или как исходный код страницы в блокноте? откройте результат работы скрипта который выдает string(137) "[{"description":"Средняя стоимость работ","cost":"","currency":2}]" в виде исходного кода страницы, что там? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 11:47 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Что делаю: В js передаю массив транзитом через плагин jquery.form как параметр data: {mytext: encodeURIComponent(JSON.stringify(data))}. В PHP получаю нобор параметров, в том числе и mytext c нужной строкой. Далее записываю его в БД и проч. Так вот, строка в mytext получается искаженной и пока не могу разобраться как ее исправить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 12:01 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Там все кавычки заменены на " :(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 12:02 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
На " т.е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 12:44 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Блин... quot ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 12:44 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Заменить quot обратно на кавычки. Не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 13:27 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2Там все кавычки заменены на " :(( Ну... это нормально, когда используешь var_dump :) он же и предназначен для вывода в HTML :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2012, 13:46 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
print_r то же самое выводил) Как раз тоже нагуглил specialchars-decode. Помогло. Хотя, конечно, хотелось бы решить эту проблему в JS, что 100500 раз не кодировать. Но там, ума на приложу, что так кодирует строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 03:49 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2хотелось бы решить эту проблему в JSВ общем то, мысль в правильном направлении. Тем более, что ноги ратут как раз оттуда. Только вот зачем сделано такое преобразование - вопрос уже другого толка. Не просто ж так прикрутили... Возможно, для того чтобы гарантировано избежать проблем при появлении кавычек в значении поля формы. Тогда удаление такого преобразования может потянуть за собой другую проблему. Shitbox2Какая функция в JS может так пакостить?Да, собственно, любой способ замены подстроки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 04:05 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2В БД записана JSONстрока Её var_dump выдает: string(137) "[{"description":"Средняя стоимость работ","cost":"","currency":2}]" json_decode вызывает NULL Копируем эту строку и вставляем напрямую в var_dump. Уже получается: string(87) "[{"description":"Средняя стоимость работ","cost":"","currency":2}]" json_decode возвращает массив. Данные кодируются JS в JSON с помощью JSON.stringify(data) или encodeURIComponent(JSON.stringify(data)) (без разницы), хранятся в БД в поле text utf8_unicode_ci, т.к. varchar слишком маленький для них Что за дела такие?страницы в cp1251. боролся и поборол в json отправку кириллицы на клиент так _http://phptunes.blogspot.com/2007/01/phpjson.html - не работает ( тогда код. с помощью Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 13:56 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
кэш-копия работает http://webcache.googleusercontent.com/search?q=cache:jSyiMiFLXrgJ:phptunes.blogspot.com/2007/01/phpjson.html+&cd=1&hl=ru&ct=clnk&gl=ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 14:19 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Хм... Ничего подобного, вот с кириллицей проблем никогда не было. На своем опыте убедился, что в js (ANSI) → php (ANSI/UTF-8) без проблем работает JSON.stringify(data) → json_decode(data, true) Для js (UTF-8) → php (ANSI/UTF-8) Нужно писать encodeURIComponent(JSON.stringify(data)) → json_decode(data, true) иначе вырежутся знаки "+". Cудя по всему, в плагине делается преобразование типа specialchars, но где... Ни одной похожей строковой функции там не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 15:08 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Shitbox2Хм... Ничего подобного, вот с кириллицей проблем никогда не было.что "ничего подобного"? говорю, только так победил. Код: php 1. 2. 3. 4. Код: html 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 15:41 |
|
||
|
Странное поведение JSON-строки
|
|||
|---|---|---|---|
|
#18+
Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2012, 15:43 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38031231&tid=1464442]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 512ms |

| 0 / 0 |
