为utf-8单词剪切parse_str()值

Have problem with parse_str() values are cut and after that the other values donot get saved at all this happen only with me when I use Arabic characters,it work fine with English words

here is my code

$custom = post('custom');
parse_str(post('custom'), $data);
$email = isset($data['email']) && $data['email'] ? $data['email'] : null;
$address = isset($data['address']) && $data['address'] ? $data['address'] : null;

Edit

the data come from javascript

var formData = $('#form').serialize();
$('.form input[name="custom"]').val(formData);

when I

alert(formData);

I see the data fine

item_id=1&address=%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85‌​+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85&email=test%40gmail.com

When I try to debug in php

$custom = post('custom');

error_log(print_r($custom,true));

parse_str(post('custom'), $data);

error_log(print_r(post('custom'),true));

I see the data wrong

item_id=1&address=%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%

item_id=1&address==%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%A7%D9%85+%D9%83%D9%84%D8%

I donot know from where this problem come anymore is it from the serizlize or parse_str

Any help will be appreciated

Since Arabic characters are encoded using more than one byte under UTF-8, you should use multibyte-aware mb_parse_str(). (See docs.)

From what I do understand from parse_str documentation the function expects the string to be url-encoded.

Given your example php isn't the problem if you provide the correct data (see comment below). Consider that if you're using GET, the url can be truncated over 255 bytes, which looks pretty close to your cutout problem.