Olá,
Estou com uma dúvida, porque a saída do caractere "ç" tem 4 bytes, se o encoding UTF-16 tem 16 bits(2 bytes) ?
package br.com.alura.java.io.teste;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public class TesteUnicodeEEncoding {
public static void main(String[] args) throws Exception {
String caractere = "ç";
System.out.println(caractere.codePointAt(0));
Charset charset = Charset.defaultCharset();
System.out.println(charset.displayName());
byte[] bytes = caractere.getBytes("windows-1252");
System.out.print(bytes.length + ", windows-1252 ");
String novaString = new String(bytes, "windows-1252");
System.out.println(novaString);
System.out.println("Conteúdo do Array " + Arrays.toString(bytes));
bytes = caractere.getBytes("UTF-16");
System.out.print(bytes.length + ", UTF-16 ");
novaString = new String(bytes, "UTF-16");
System.out.println(novaString);
System.out.println("Conteúdo do Array " + Arrays.toString(bytes));
bytes = caractere.getBytes(StandardCharsets.US_ASCII);
System.out.print(bytes.length + ", US_ASCII ");
novaString = new String(bytes, "US-ASCII");
System.out.println(novaString);
System.out.println("Conteúdo do Array " + Arrays.toString(bytes));
}
}
Saída:
231
UTF-8
1, windows-1252 ç
Conteúdo do Array [-25]
4, UTF-16 ç
Conteúdo do Array [-2, -1, 0, -25]
1, US_ASCII ?
Conteúdo do Array [63]