Дмитрий2312 Опубликовано: июля 25, 2017 Жалоба Поделиться Опубликовано: июля 25, 2017 метод POST из представления контроллеру шлёт русский язык в таком формате: {"txt_symheight":"\u0412\u044b\u0441\u043e\u0442\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u043c\u043c","inp_symheight":"60","txt_fieldswidth":"\u0428\u0438\u0440\u0438\u043d\u0430 \u043f\u043e\u043b\u0435\u0439, \u043c\u043c","inp_fieldswidth":"120","txt_material":"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b","sel_material":{"selected":"PET0.75","PET0.3":"\u041f\u042d\u0422 0.3 \u043c\u043c","PET0.5":"\u041f\u042d\u0422 0.5 \u043c\u043c","PET0.75":"\u041f\u042d\u0422 0.75 \u043c\u043c","PET1":"\u041f\u042d\u0422 1 \u043c\u043c"},"const_proportions":"12","const_count":"3","const_lenght":"4"} как конвертнуть его в такой вид: {"txt_symheight": "Высота символа, мм", "inp_symheight": 50, "txt_fieldswidth": "Ширина полей, мм", "inp_fieldswidth": 20, "txt_material": "Материал", "sel_material": { "selected": "PET0.3", "PET0.3": "ПЭТ 0.3 мм", "PET0.5": "ПЭТ 0.5 мм", "PET0.75": "ПЭТ 0.75 мм", "PET1": "ПЭТ 1 мм" } } не хочу в базе много места занимать, всё-равно всё в UTF-8 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Дмитрий2312 Опубликовано: июля 25, 2017 Автор Жалоба Поделиться Опубликовано: июля 25, 2017 понятно почему, потому что кириллицей не передать а с местом лучше экономить и запросы быстрее в базе будут обрабатываться и т.д. и т.п. неужели никто не заморачивается с такими вещами? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Дмитрий2312 Опубликовано: июля 26, 2017 Автор Жалоба Поделиться Опубликовано: июля 26, 2017 Спасибо, я понял вашу позицию. И всё же вопрос для меня актуален. Понятно, что \u символы получаются после кодировки массива в json, при декодировке они обратно конвертируются в кириллицу. Нашёл следующий код, который преобразует \u символы в кириллицу: function jsonRemoveUnicodeSequences($struct) { return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct)); } однако там перед каждым символом добавляются обратные слэши кто подскажет где косяк? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Дмитрий2312 Опубликовано: июля 26, 2017 Автор Жалоба Поделиться Опубликовано: июля 26, 2017 Всё проблему решил. Если кому-нибудь надо вот рабочий код: function jsonRemoveUnicodeSequences($struct) { return preg_replace('~\\\\~', "", preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct))); } Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.