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?