in commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/ParameterParser.java [158:197]
public Map<String, String> parse(final char[] charArray, final int offset, final int length, final char separator) {
if (charArray == null) {
return new HashMap<>();
}
final var params = new HashMap<String, String>();
this.chars = charArray.clone();
this.pos = offset;
this.len = length;
String paramName;
String paramValue;
while (hasChar()) {
paramName = parseToken(new char[] { '=', separator });
paramValue = null;
if (hasChar() && charArray[pos] == '=') {
pos++; // skip '='
paramValue = parseQuotedToken(new char[] { separator });
if (paramValue != null) {
try {
paramValue = RFC2231Utils.hasEncodedValue(paramName) ? RFC2231Utils.decodeText(paramValue) : MimeUtils.decodeText(paramValue);
} catch (final UnsupportedEncodingException ignored) {
// let's keep the original value in this case
}
}
}
if (hasChar() && charArray[pos] == separator) {
pos++; // skip separator
}
if (paramName != null && !paramName.isEmpty()) {
paramName = RFC2231Utils.stripDelimiter(paramName);
if (this.lowerCaseNames) {
paramName = paramName.toLowerCase(Locale.ROOT);
}
params.put(paramName, paramValue);
}
}
return params;
}