Кодировка русского языка при POST передаче


Дмитрий2312
 Поделиться

Рекомендуемые сообщения

метод 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

Ссылка на комментарий
Поделиться на других сайтах

понятно почему, потому что кириллицей не передать

а с местом лучше экономить и запросы быстрее в базе будут обрабатываться и т.д. и т.п.

неужели никто не заморачивается с такими вещами?

Ссылка на комментарий
Поделиться на других сайтах

  • RHCk изменил(а) заголовок на Кодировка русского языка при POST передаче

Спасибо, я понял вашу позицию.

И всё же вопрос для меня актуален.

Понятно, что \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));
}

однако там перед каждым символом добавляются обратные слэши

кто подскажет где косяк?

Ссылка на комментарий
Поделиться на других сайтах

Всё проблему решил.

Если кому-нибудь надо вот рабочий код:

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)));
}

 

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу