@@ -27,19 +27,20 @@ inline void url_search_params::initialize(std::string_view input) {
2727 auto equal = current.find_first_of (" =" );
2828
2929 if (equal == std::string_view::npos) {
30- params.emplace_back (current, " " );
30+ auto name = std::string (current);
31+ std::replace (name.begin (), name.end (), ' +' , ' ' );
32+ params.emplace_back (
33+ unicode::percent_decode (name, name.find_first_of (' %' )), " " );
3134 } else {
32- auto plain_name = current.substr (0 , equal);
33- auto plain_value = current.substr (equal + 1 );
34- auto name =
35- unicode::percent_decode (plain_name, plain_name.find_first_of (' %' ));
36- auto value =
37- unicode::percent_decode (plain_value, plain_value.find_first_of (' %' ));
35+ auto name = std::string (current.substr (0 , equal));
36+ auto value = std::string (current.substr (equal + 1 ));
3837
3938 std::replace (name.begin (), name.end (), ' +' , ' ' );
4039 std::replace (value.begin (), value.end (), ' +' , ' ' );
4140
42- params.emplace_back (name, value);
41+ params.emplace_back (
42+ unicode::percent_decode (name, name.find_first_of (' %' )),
43+ unicode::percent_decode (value, value.find_first_of (' %' )));
4344 }
4445 };
4546
0 commit comments