Por que a string “¿” é traduzida para “ÿ” ao chamar .getBytes ()
-
05-07-2019 - |
Pergunta
Ao escrever a string "¿" usando
System.out.println(new String("¿".getBytes("UTF-8")));
ÿ é escrito em vez de apenas ¿.
POR QUE? E como é que vamos corrigir isso?
Solução
Você não tem que usar UTF-16 para resolver este:
new String("¿".getBytes("UTF-8"), "UTF-8");
funciona muito bem. Enquanto a codificação dada ao método getBytes()
é o mesmo que a codificação você passar para o construtor String, você deve estar bem!
Outras dicas
Você precisa especificar o Charset no construtor String (veja o documentação da API ).
Tente:
System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
Você precisa especificar a codificação tanto ao converter a string para bytes e ao converter os bytes de volta para uma string.
Parece que o console do sistema não está em UTF-8
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow