Bonjour,
C'est plus un "arrêtez moi si je me trompe" qu'une réelle question (encore que).
Pour corriger un bug, je vais devoir revoir une large partie de mon code, alors je préfère vous demander avant de faire des bêtises.
Sur une interface de chat, mes clients linux ont des soucis avec les caractères accentués. J'ai bien compris que j'avais un problème d'encodage lors du transfert des données entre le client et le serveur.
Voici comment je gère les entrées/sorties :
J'ai vu que pour le InputStreamReader, je pouvais lui indiquer un encodage. Pour le PrintWriter (qui semble être une classe basique), si j'ai bien tout compris, je ne peux pas définir d'encodage particulier. Je pense donc le transformer en OutputStreamWriter. Seulement comme je faisait partout ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 connect = new Socket(host, i); sortie = new PrintWriter(connect.getOutputStream()); entree = new BufferedReader(new InputStreamReader(connect .getInputStream()));
je vais devoir faire (si j'ai bien tout compris)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sortie.println(UneString); sortie.flush();
est-ce que j'ai bon?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sortie.write(UneString); sortie.flush();
Voilà pour la partie "arrêtez moi si je me trompe".
Pour la partie questions :
- Je n'ai aucun besoin particulier en matière d'encodage (faudrait juste qu'ils gèrent le #, c'est ma seule exigence, c'est dire...), est-ce que j'ai des raisons d'en choisir un plus particulièrement? J'ai vu que je pouvais lever une exception du type encodageinconnu ou quelque chose de ce genre, est-ce qu'il y a des encodages forcément connus par Mac, Linux et windows ?
- Est-ce qu'il y a d'autres conséquences que simplement devoir changer mes println() en write() ?
Merci de m'avoir lu jusque là.
Partager