java: encodage des caractères
Bonsoir tout le monde.
soit le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10
| public static void main(String[] args) throws IOException {
String s = "NETWORK";
try (
FileOutputStream fos = new FileOutputStream("d:/endian.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF_16BE");) {
osw.write(s);
osw.flush();
}
} |
après l'exécution, j’obtiens un fichier contentant la chaine: N E T W O R K; la taille du fichier obtenu est 14 octets (7 caractères* 2 octets). remarquer les espaces entre les caractères de la chaine.
quand je change l'encodage avec: UTF_16LE, j'obtiens un fichier de taille 14 octets, qui contient la chaine suivante: NETWORK. pas d'espace entre les caractères!!. pour quoi? j'attends une chaine comme la suivante:N E T W O R K
complément: NETWORK codé avec big-endian UTF-16:
00 4E 00 65 00 74 00 77 00 6F 00 72 00 6B
NETWORK codé avec little-endian UTF-16:
4E 00 65 00 74 00 77 00 6F 00 72 00 6B 00