Passei por um problema parecido no trabalho, basicamente o usuário anexava um arquivo utilizando "ç, ã ..." mas o nome vinha em por padrão com o Charset "ISO 8895-1"
https://stackoverflow.com/questions/15044027/utf-8-charset-doesnt-work-with-javax-mail
Mas não consegui converter para o Charset "UTF-8", tive de usar uma biblioteca para fazer isso por mim (substituindo ç -> c, ã -> a). Seria possível fazer a conversão para não perder esses caracteres?
package teste;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class TestaCodigos {
public static void main(String[] args) throws Exception {
String cedilha = "ç";
Charset charsetUTF8 = StandardCharsets.UTF_8;
Charset charsetASCII= StandardCharsets.US_ASCII;
byte[] byteASCII = cedilha.getBytes(charsetASCII);
byte[] byteUTF8 = cedilha.getBytes(charsetUTF8);
System.out.println(byteASCII.length +", " + charsetASCII.displayName());
System.out.println(byteUTF8.length +", " + charsetUTF8.displayName());
String stringASCII = new String(byteASCII, charsetASCII);
String stringUTF8 = new String(byteUTF8, charsetUTF8);
System.out.println(stringASCII);
System.out.println(stringUTF8);
// conversao
System.out.println("------------- conversao -------------");
byte[] byteConversao = stringASCII.getBytes(charsetUTF8);
String stringConversao = new String(byteConversao, charsetUTF8);
System.out.println(stringConversao);
}
}
Saída:
1, US-ASCII
2, UTF-8
?
ç
------------- conversao -------------
?