@@ -27,19 +27,20 @@ inline void url_search_params::initialize(std::string_view input) {
27
27
auto equal = current.find_first_of (" =" );
28
28
29
29
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 (' %' )), " " );
31
34
} 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 ));
38
37
39
38
std::replace (name.begin (), name.end (), ' +' , ' ' );
40
39
std::replace (value.begin (), value.end (), ' +' , ' ' );
41
40
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 (' %' )));
43
44
}
44
45
};
45
46
0 commit comments