@Override
    @NonNull
    public String toString() {
        if (percentEncoding) {
            if (isEmpty()) {
                return "";
            }
            final StringBuilder builder = new StringBuilder();
            for (final ImmutablePair<String, String> nameValuePair : this) {
                builder.append('&').append(percentEncode(nameValuePair.left)).append('=').append(percentEncode(nameValuePair.right));
            }
            return builder.substring(1);
        }
        final Builder builder = HttpUrl.parse("https://dummy.cgeo.org/").newBuilder();
        for (final ImmutablePair<String, String> nameValuePair : this) {
            builder.addQueryParameter(nameValuePair.left, nameValuePair.right);
        }
        return StringUtils.defaultString(builder.build().encodedQuery());
    }
Some sites require the use of percent encoding (see {@link #percentEncode(String)}) and do not
accept other encodings during their authorization and signing processes. This forces those
parameters to use percent encoding instead of the regular encoding.
main/src/main/java/cgeo/geocaching/network/Parameters.java