problème d'encoding [Java] - Java - Programmation
Marsh Posté le 12-01-2008 à 14:48:43
Pour être très très succint, le code suivant affiche mal la string dans la console debug d'eclipse, mais s'affiche bien dans l'onglet "Display" d'eclipse :
|
Pourquoi ?
Marsh Posté le 12-01-2008 à 17:28:58
Tout d'abord, tu vas me faire le plaisir d'aller lire http://www.joelonsoftware.com/articles/Unicode.html
Ensuite, tu remarqueras qu'à aucun moment tu ne dis à java en quel encoding est le fichier
Marsh Posté le 12-01-2008 à 17:33:02
Giz a écrit : Pour être très très succint, le code suivant affiche mal la string dans la console debug d'eclipse, mais s'affiche bien dans l'onglet "Display" d'eclipse :
|
Parce que la console n'est peut être pas configuré pour sortir de l'utf8
Marsh Posté le 14-01-2008 à 11:29:40
masklinn a écrit : Tout d'abord, tu vas me faire le plaisir d'aller lire http://www.joelonsoftware.com/articles/Unicode.html |
Bah
Citation : A cette adresse : ftp://88.165.6.232/ vous trouverez un fichier "__________.txt" qui contient des caractères bizarres mais justes (y'a du russe, du polonais et du turc). Il est en UTF-8. |
Sinon j'ai lu ton article. Intéressant comme théorie. Cependant cela ne m'aide pas vraiment dans la pratique avec java. Je suis confronté à une API.
Marsh Posté le 14-01-2008 à 11:33:04
zapan666 a écrit : |
J'ai beau chercher dans toutes les options d'eclipse, je n'ai pas trouvé comment paramétrer cela...En fait le fond de ma question est que j'envoie la String dans le body d'un mail sensé être en UTF-8 (encoding indiqué par outlook en plus à la lecture du mail). Cependant les caractères affichés dans le corps du mail sont exactement ceux de la console (caractères spéciaux s'affichent mal).
Du coup, je me dis, "tant que ça s'affiche mal dans la console, ça s'affichera mal dans le corps du mail". Alors que dans l'onglet "display" d'eclipse, ce problème d'affichage n'apparaît pas.
J'ai essaié des codes du style :
Code :
|
Mais le bug est toujours présent.
Marsh Posté le 14-01-2008 à 11:44:26
Giz a écrit : Bah
|
J'en ai rien à braire du sujet de ton exercice, je t'ai dit qu'à aucun endroit tu ne le fais savoir à Java. Java, il va pas lire ton sujet pour savoir ce qu'il doit faire
Giz a écrit : Sinon j'ai lu ton article. Intéressant comme théorie. Cependant cela ne m'aide pas vraiment dans la pratique avec java. Je suis confronté à une API. |
Je te suggère de relire l'article, parce qu'apparement t'as rien compris.
Et ça n'a rien d'une théorie bon sang de bois
Giz a écrit : J'ai beau chercher dans toutes les options d'eclipse, je n'ai pas trouvé comment paramétrer cela...En fait le fond de ma question est que j'envoie la String dans le body d'un mail sensé être en UTF-8 (encoding indiqué par outlook en plus à la lecture du mail). Cependant les caractères affichés dans le corps du mail sont exactement ceux de la console (caractères spéciaux s'affichent mal). |
Non mais à la base t'as pas l'air de percuter qu'à aucun moment tu ne dis à java quel est l'encodage de ton fichier d'entrée __________.txt
Donc il utilise un encodage par défaut (lequel, j'en sais rien) et ça pète, ça n'a rien de bizarre
edit: d'ailleurs je suis persuadé que tu ne dis pas non plus à java avec quel encodage il est censé écrire le fichier de sortie...
Marsh Posté le 14-01-2008 à 13:24:54
Giz a écrit : |
C'est parce que l'option est pas si facile a trouvé que ça
Tu as fais un "Run" pour ton projet je supose (le truc avec la flèche verte) ? tu l'édite et dans l'onglet common, tu dois pouvoir changer l'encoding
Marsh Posté le 14-01-2008 à 13:49:56
masklinn a écrit : |
masklinn a écrit : |
masklinn a écrit : |
Si jamais tu trouves dans l'API une méthode qui permet d'ouvrir un fichier en pouvant spécifier le format d'encodage de celui-ci, dis moi où elle est alors...j'en ai pas vu.
J'ai essaié un autre code java :
CharsetDecoder decoder = Charset.forName("UTF-8" ).newDecoder(); |
qui retourne une String "buggée" encore .
Marsh Posté le 14-01-2008 à 13:52:42
zapan666 a écrit : |
J'ai regardé, je n'ai aucun indication parlant de l'encoding dans cet onglet. Je dispose d'eclipse sous l'environnement RAD (eclispe + websphère). La version de rad est 6.0.1 qui inclus eclipse 3.0.2
Marsh Posté le 14-01-2008 à 14:09:14
Giz a écrit : Si jamais tu trouves dans l'API une méthode qui permet d'ouvrir un fichier en pouvant spécifier le format d'encodage de celui-ci, dis moi où elle est alors...j'en ai pas vu. |
InputStreamReader et OutputStreamWriter prennent un encoding normalement.
C'est super merdique à utiliser (comme toutes les API d'I/O java), faut les wrapper autour de et dans d'autres trucs, mais normalement ça marche.
Marsh Posté le 14-01-2008 à 14:13:51
masklinn a écrit : |
Marsh Posté le 14-01-2008 à 14:15:37
Marsh Posté le 14-01-2008 à 15:39:49
masklinn a écrit : |
J'ai donc essaié ces méthodes. Je lis mon fichier avec, je génère une String après lecture et je l'affiche dans la console puis je l'envoi dans le contenu d'un mail (les 2). Même résultat : les caractères spéciaux ne passent pas.
Code :
|
RQ : le contenu du mail est exactement le même que celui de l'affichage dans la console debug d'eclipse , bien qu'ayant spécifié de l'UTF-8 "de partout" (et outlook me détecte bien un mail en UTF-8)
Marsh Posté le 14-01-2008 à 15:59:25
pourquoi ?
Marsh Posté le 14-01-2008 à 17:22:33
Parce que à voir ton code on dirait que t'as pas la moindre idée de ce que tu es entrain de taper n'importe quoi, juste pour nous faire plaisir, sans avoir aucune idée de ce c'est au juste
Marsh Posté le 14-01-2008 à 17:32:57
lol, calmos chicos J'ai peut être oublié de rajouter "newbie" dans le post à voir vos réactions.
Marsh Posté le 14-01-2008 à 17:41:16
Non mais non ... Le problème c'est que ton truc suffit de lire la doc (je t'assure, y a des gens avant toi qui ont eu l'idée de faire un programme qui supporte le utf8) ... Ce que manifestement tu veux pas faire
Marsh Posté le 14-01-2008 à 17:42:50
j'ai fait
Code :
|
Mais après je souhaite avoir une String en UTF-8.
Marsh Posté le 14-01-2008 à 18:00:51
Je veux pas trop enfoncer le clou mais ...
Citation : |
Marsh Posté le 12-01-2008 à 14:17:52
Bonjour,
modo > J'avais déjà crée un sujet (qui a été fermé ) sur un problème d'encoding. Désolé j'ai oublié de présenter mon avancement sur le problème. Je reprends.
Voilà un programme d'encoding que je n'arrive pas à faire marche avec Java.
A cette adresse : ftp://88.165.6.232/ vous trouverez un fichier "__________.txt" qui contient des caractères bizarres mais justes (y'a du russe, du polonais et du turc). Il est en UTF-8.
Le but est de lire ce fichier en entrée et de le contenir dans une String java.
A partir de cette String, l'écrire dans un fichier de sortie résultat : res.txt
Le résultat attendu par le programme est que res.txt est une copie conforme de "__________.txt".
Je bute sur ce programme depuis un bon moment et j'ai besoin de votre aide
Restriction : S'appuyer seulement sur des méthodes de l'API Java 1.4.2 ou inférieur.
Rien que le code ci-dessus ne marche pas lorsque j'affiche res dans la console eclipse, pourquoi ? Qu'y a-t-il de faux ?
---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3