a %-encoded string containing attribute=value parameters
the length of params, or -1 if it is nul-terminated
the separator byte character set between parameters. (usually &, but sometimes ; or both &;). Note that this function works on bytes not characters, so it can't be used to delimit UTF-8 strings for anything but ASCII characters. You may pass an empty set, in which case no splitting will occur.
flags to modify the way the parameters are handled.
A hash table of attribute/value pairs, with both names and values fully-decoded; or null on error.
Many URI schemes include one or more attribute/value pairs as part of the URI value. This method can be used to parse them into a hash table. When an attribute has multiple occurrences, the last value is the final returned value. If you need to handle repeated attributes differently, use #GUriParamsIter.
The params string is assumed to still be %-encoded, but the returned values will be fully decoded. (Thus it is possible that the returned values may contain = or separators, if the value was encoded in the input.) Invalid %-encoding is treated as with the G_URI_FLAGS_PARSE_RELAXED rules for glib.uri.Uri.parse. (However, if params is the path or query string from a #GUri that was parsed without G_URI_FLAGS_PARSE_RELAXED and G_URI_FLAGS_ENCODED, then you already know that it does not contain any invalid encoding.)
G_URI_PARAMS_WWW_FORM is handled as documented for glib.uri_params_iter.UriParamsIter.init_.
If G_URI_PARAMS_CASE_INSENSITIVE is passed to flags, attributes will be compared case-insensitively, so a params string attr=123&Attr=456 will only return a single attribute–value pair, Attr=456. Case will be preserved in the returned attributes.
If params cannot be parsed (for example, it contains two separators characters in a row), then error is set and null is returned.