69 votes

La taille des caractères en Java n'est-elle pas 2 octets ?

J'ai utilisé RandomAccessFile pour lire un byte partir d'un fichier texte.

 public static void readFile(RandomAccessFile fr) {
    byte[] cbuff = new byte[1];
    fr.read(cbuff,0,1);
    System.out.println(new String(cbuff));
}

Pourquoi est-ce que je vois un caractère complet lu par ceci ?

7voto

Andreas_D Points 64111

Le constructeur String(byte[] bytes) prend les octets du tampon et les encode en caractères.

Il utilise le jeu de caractères par défaut de la plate-forme pour coder les octets en caractères. Si vous savez que votre fichier contient du texte, qui est encodé dans un jeu de caractères différent, vous pouvez utiliser le String(byte[] bytes, String charsetName) pour utiliser le bon encodage (des octets aux caractères).

2voto

RemoteSojourner Points 533

Dans un fichier texte ASCII, chaque caractère n'est qu'un octet

1voto

andrew Points 87

On dirait que votre fichier contient des caractères ASCII, qui sont encodés sur 1 octet seulement. Si le fichier texte contenait des caractères non ASCII, par exemple UTF-8 à 2 octets, alors vous n'obtenez que le premier octet, pas le caractère entier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X