Je voudrais lire et écrire des caractères dans un fichiers en récupérant le
code binaire.
Si les caractères sont code en ASCII, no problemo: "FileInputStream" et
"FileOutputStream" fonctionnent t'es bien.
Mais comment faire pour lire, et surtout écrire de l'Unicode ?
J'ai bien regardé l'API java.io mais je ai des doutes ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frederic Lachasse
"Philippe" wrote in message news:bgl7ms$ish$
Salut à tous,
Je voudrais lire et écrire des caractères dans un fichiers en récupérant le
code binaire. Si les caractères sont code en ASCII, no problemo: "FileInputStream" et "FileOutputStream" fonctionnent t'es bien.
Mais comment faire pour lire, et surtout écrire de l'Unicode ? J'ai bien regardé l'API java.io mais je ai des doutes ...
Java possède des fonctions pour convertir des "char" Java 16 bits en série de bytes et vice versa. Cette conversion ce fait selon un "Charset". Parmi les "Charset" disponible en Java, 4 convertissent en Unicode: "UTF-8", "UTF-16", "UTF-16BE" et "UTF16LE". UTF-8 code chaque caractère Unicode en sequence de 1, 2 ou 3 octets. Les autres codent en séquence de 2 octets, UTF-16BE en Big-Endian, UTF-16LE en Little-Endian et UTF-16 utilise un "Byte Order Mark" (caractère FEFF) pour déterminer le "byte order" little ou big endian.
Les API qui convertissent sont principalements:
String(byte[], String charsetName): construit une chaine à partir de byte[] codé avec charsetName. String.getBytes(String charsetName): code un String en byte[] en utilisant le charsetName.
java.io.OutputStreamWriter(java.io.OutputStream out, String charsetName): crée un Writer (stream pour écrire des caractères) qui va coder les caractères écrits en bytes en utilisant le charsetName pour les écrires dans l'OutputStream out. java.io.InputStreamReader(java.io.InputStream in, String charsetName): crée un Reader (stream pour lire des caractères) qui va convertir les bytes lus sur l'InputStream in en caractère en utilisant le charsetName.
Le JDK 1.4 ajoute dans Java.nio les classes Charset* qui permette de créer ses propres conversions.
-- Frédéric Lachasse -
"Philippe" <philippe.cuisinaud@wanadoo.fr> wrote in message
news:bgl7ms$ish$1@news-reader5.wanadoo.fr...
Salut à tous,
Je voudrais lire et écrire des caractères dans un fichiers en récupérant
le
code binaire.
Si les caractères sont code en ASCII, no problemo: "FileInputStream" et
"FileOutputStream" fonctionnent t'es bien.
Mais comment faire pour lire, et surtout écrire de l'Unicode ?
J'ai bien regardé l'API java.io mais je ai des doutes ...
Java possède des fonctions pour convertir des "char" Java 16 bits en série
de bytes et vice versa. Cette conversion ce fait selon un "Charset". Parmi
les "Charset" disponible en Java, 4 convertissent en Unicode: "UTF-8",
"UTF-16", "UTF-16BE" et "UTF16LE". UTF-8 code chaque caractère Unicode en
sequence de 1, 2 ou 3 octets. Les autres codent en séquence de 2 octets,
UTF-16BE en Big-Endian, UTF-16LE en Little-Endian et UTF-16 utilise un "Byte
Order Mark" (caractère FEFF) pour déterminer le "byte order" little ou big
endian.
Les API qui convertissent sont principalements:
String(byte[], String charsetName): construit une chaine à partir de
byte[] codé avec charsetName.
String.getBytes(String charsetName): code un String en byte[] en
utilisant le charsetName.
java.io.OutputStreamWriter(java.io.OutputStream out, String
charsetName): crée un Writer (stream pour écrire des caractères) qui va
coder les caractères écrits en bytes en utilisant le charsetName pour les
écrires dans l'OutputStream out.
java.io.InputStreamReader(java.io.InputStream in, String charsetName):
crée un Reader (stream pour lire des caractères) qui va convertir les bytes
lus sur l'InputStream in en caractère en utilisant le charsetName.
Le JDK 1.4 ajoute dans Java.nio les classes Charset* qui permette de créer
ses propres conversions.
Je voudrais lire et écrire des caractères dans un fichiers en récupérant le
code binaire. Si les caractères sont code en ASCII, no problemo: "FileInputStream" et "FileOutputStream" fonctionnent t'es bien.
Mais comment faire pour lire, et surtout écrire de l'Unicode ? J'ai bien regardé l'API java.io mais je ai des doutes ...
Java possède des fonctions pour convertir des "char" Java 16 bits en série de bytes et vice versa. Cette conversion ce fait selon un "Charset". Parmi les "Charset" disponible en Java, 4 convertissent en Unicode: "UTF-8", "UTF-16", "UTF-16BE" et "UTF16LE". UTF-8 code chaque caractère Unicode en sequence de 1, 2 ou 3 octets. Les autres codent en séquence de 2 octets, UTF-16BE en Big-Endian, UTF-16LE en Little-Endian et UTF-16 utilise un "Byte Order Mark" (caractère FEFF) pour déterminer le "byte order" little ou big endian.
Les API qui convertissent sont principalements:
String(byte[], String charsetName): construit une chaine à partir de byte[] codé avec charsetName. String.getBytes(String charsetName): code un String en byte[] en utilisant le charsetName.
java.io.OutputStreamWriter(java.io.OutputStream out, String charsetName): crée un Writer (stream pour écrire des caractères) qui va coder les caractères écrits en bytes en utilisant le charsetName pour les écrires dans l'OutputStream out. java.io.InputStreamReader(java.io.InputStream in, String charsetName): crée un Reader (stream pour lire des caractères) qui va convertir les bytes lus sur l'InputStream in en caractère en utilisant le charsetName.
Le JDK 1.4 ajoute dans Java.nio les classes Charset* qui permette de créer ses propres conversions.