Por que a string "¿" é traduzida para "ÿ" ao chamar .getBytes ()

votos
2

Ao escrever a string ¿ usando

System.out.println(new String(¿.getBytes(UTF-8)));

ÿ é escrito em vez de apenas ¿.

PORQUE? E como podemos corrigir isso?

Publicado 06/10/2008 em 21:34
fonte usuário
Em outras línguas...                            


4 respostas

votos
5

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 getBytes()método é o mesmo que a codificação que passar para o construtor String, você deve estar bem!

Respondeu 06/10/2008 em 21:55
fonte usuário

votos
2

Você precisa especificar o Charset no construtor String (ver docs API ).

Respondeu 06/10/2008 em 21:41
fonte usuário

votos
1

Experimentar:

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.

Respondeu 06/10/2008 em 21:56
fonte usuário

votos
0

Soa como o console do sistema não está em UTF-8

Respondeu 06/10/2008 em 21:36
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more