Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

URL Encoding Issue %3D instead of (=)

Tags:

url

encoding

I have a url that's displayed from a variable in a search form, but due to the url encoding, its putting the "%3d" instead of the "=" sign, which obviously doesn't work.

I know you can't "turn off" url encoding can you? Don't you have to set it up to allow special characters?

Here is the code: Again, I need the = signs below to show in the resulting url, not %3d

<?php _e('Job Type'); ?><br />
    <select name="custom_field_id[]=10" class="do_input2">
    <option value=""></option>
    <option value="custom_field_value_10=Full-time">Full-time</option>
    <option value="custom_field_value_10=Part-time">Part-time</option>
    </select>
like image 908
user3606735 Avatar asked May 16 '14 00:05

user3606735


1 Answers

Do you mean that you want the submitted form data to look like this:

custom_field_id[]=10=custom_field_value_10=Full-time

In either the URL query string, or in the POST body of an application/x-www-webform-urlencoded request? If so, then no, you cannot do that. That is a violation of both the URL and application/x-www-webform-urlencoded specifications. = is a reserved separator character that cannot appear unencoded in the name and value fields, it must be url-encoded as %3D:

custom_field_id%5B%5D%3D10=custom_field_value_10%3DFull-time

It is the receiver's responsibility to url-decode the submitted data before then processing it. As such, it would see custom_field_id[]=10 and custom_field_value_10=Full-time values, just as they appeared in the original HTML.

like image 56
Remy Lebeau Avatar answered Sep 28 '22 07:09

Remy Lebeau