COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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


Recommended Posts

метод 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 changed the title to Кодировка русского языка при 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)));
}

 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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