[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: JSON и Русский язык
Kapitan79
Всем привет)

Возникла такая проблема.

Мне потребовалось из JavaScript в PHP передать фрагмент русского текста в JSON формате .

Результат не утешителен :

"arr_logic_value":["0","right","hidden@@visible","u0417u0430u043au0440.","hidden","hidden"]

Подскажите как бороться в этом случае с кодировкой. В JSON.parse вроде ничего для этого нет...
sergeiss
Вот эта строка
"u0417u0430u043au0440."

на самом деле, должна быть вот такая
"\u0417\u0430\u043a\u0440."

Ты где-то удаляешь слэши, поэтому получаешь такую хреновину. И да, это знакомые мне грабли, я по ним тоже прыгал :)
Как только появятся слэши, то всё станет работать нормально.

А где именно удаляешь слэши - ищи сам.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Kapitan79

http://php.net/manual/ru/json.constants.php

я использую JSON_UNESCAPED_UNICODE

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Kapitan79



Цитата
Ты где-то удаляешь слэши, поэтому получаешь такую хреновину. И да, это знакомые мне грабли, я по ним тоже прыгал :)
Как только появятся слэши, то всё станет работать нормально.


В том то и дело что кода, рубящего какие либо символы нет.

Есть JSON в виде текста упакованные в другой JSON

"rule_array": [
[
"6",
"Правило включения - выключения вентилятора (на логику)",
"{\"type\":\"on_off\",\"list_rules\":[{\"logic_element\":{\"arr_logic_name\":[\"sk_vent\",\"pvv\",\"zaslonki\",\"sz\",\"ss\",\"ks\"],\"arr_logic_value\":[\"0\",\"right\",\"hidden@@visible\",\"u0417u0430u043au0440.\",\"hidden\",\"hidden\"]},\"condition\":{\"arr_cond_register_name\":[\"sk_vent\",\"s_zas\"],\"arr_cond_register_val\":[\"0\",\"0\"]},\"alert_log\":{\"log_type_num\":\"\"},\"event_log\":{\"log_type_num\":\"2\"},\"data_log\":{\"log_type_num\":\"\"},\"command_log\":{\"log_type_num\":\"\"},\"send_mail\":{\"id_recipient\":\"\",\"theme\":\"\",\"text\":\"\"},\"send_sms\":{\"id_recipient\":\"\",\"theme\":\"\",\"text\":\"\"},\"exec_rule\":\"id_rule\"},{\"logic_element\":{\"arr_logic_name\":[\"sk_vent\",\"pvv\",\"zaslonki\",\"sz\",\"ss\",\"ks\"],\"arr_logic_value\":[\"1\",\"left\",\"visible@@hidden\",\"u041eu0442u043au0440.\",\"visible\",\"visible\"]},\"condition\":{\"arr_cond_register_name\":[\"sk_vent\",\"s_zas\"],\"arr_cond_register_val\":[\"1\",\"1\"]},\"alert_log\":{\"log_type_num\":\"\",\"log_text\":\"\"},\"event_log\":{\"log_type_num\":\"1\",\"log_text\":\"\"},\"data_log\":{\"log_type_num\":\"\",\"log_text\":\"\"},\"command_log\":{\"log_type_num\":\"\",\"log_text\":\"\"},\"send_mail\":{\"id_recipient\":\"\",\"theme\":\"\",\"text\":\"\"},\"send_sms\":{\"id_recipient\":\"\",\"theme\":\"\",\"text\":\"\"},\"exec_rule\":\"id_rule\"}]}",
null,
"2"
]
В базе, откуда берётся "вложенный" JSON, никаких кавычек нет. Их автоматически создаёт


json_encode($admin_sens_save ->arr_json_ans,JSON_UNESCAPED_UNICODE)


а JSON.parse легко превращает в объект без искажений. Но вот когда приходит очередь отправлять исправленный объект обратно в базу с помощью JSON.parse, он начинает каверкать русский текст и удалять символы + и - если такие есть в значениях.

Вот почему это происходит - вопрос.


Цитата
я использую JSON_UNESCAPED_UNICODE


Пролема на стороне JS
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.