URL Encoding issues on Windows

Viewed 92
            ObjectMetadata objectMetadata = new ObjectMetadata();
            String utf8PackageName = URLEncoder.encode(packageName, "UTF8").replace("+", "%20");
            LOGGER.debug("utf8PackageName : {}", utf8PackageName);
            objectMetadata.setContentDisposition("attachment; filename*=UTF-8''" + utf8PackageName);
            request.setMetadata(objectMetadata);

I am trying to use above code to set content disposition in request for an object upload to S3. Problem I am facing is that URLEncoder.encode() is giving different values on windows and linux machines and it sets different content disp values.

I tried to decode utf8PackageName generated on windows machine using online decoders but it decodes to a different values.

E.g. (JAVA 8)

äöööüüüüüü => (Linux) : %C3%A4%C3%B6%C3%B6%C3%B6%C3%BC%C3%BC%C3%BC%C3%BC%C3%BC%C3%BC : Decoding works fine

äöööüüüüüü => (Windows) : %C3%83%C2%A4%C3%83%C2%B6%C3%83%C2%B6%C3%83%C2%B6%C3%83%C2%BC%C3%83%C2%BC%C3%83%C2%BC%C3%83%C2%BC%C3%83%C2%BC%C3%83%C2%BC : Decoding does not work fine

I observed that in case of windows, every %C3 is replaced by %C3%83%C2

What am I doing wrong?

0 Answers
Related