Précédent   Forum des professionnels en informatique > Environnements de développement > Eclipse > Eclipse Java
Eclipse Java Forum d'entraide sur l'EDI Eclipse pour Java. Avant de poster -> La F.A.Q Eclipse, Tutoriels Eclipse
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2008, 12h58   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 85
Points : 63
Points : 63
Par défaut Compiler sous linux en UTF-8 avec Eclipse et obtenir un charset CP1252 sous Windows ?

Bonjour, je compile un programme sous linux contenant des accents :

String str = "Je préfère Linux pour compiler";
System.out.println(str);

Lancé sur depuis une console UTF-8 sur Linux il me retourne ma string en UTF-8
Mais sous Windows, les accents sont corrompus, dans le genre "Je prérère Linux pour compiler"

Est t'il possible de gérer correctement le jeu de caractère pour les 2 systèmes ?
Ou même simplement de compiler depuis linux à destination d'un jeu de caractère windows ?


J'ai essayer d'encoder mon fichier en windows, mais le "Text file encoding" depuis Linux propose seulement :
ISO-8859-1
US-ASCII
UTF-16
UTF-16BE
UTF-16LE
UTF-8

Mais pas le CP1252 de Windows...
sjachym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 13h57   #2
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Salut,


Le problème ne vient pas de l'encodage de tes fichiers sources ! En effet une fois compilé toutes les Strings sont stockées en UTF-16...

Donc tu peux très bien utiliser n'importe quel encodage dans tes fichiers sources, du moment que le bon encodage est utilisé lors de la compilation.



En fait le problème vient du fait que sous Windows la console n'utilise pas vraiment du cp1252 mais du cp850 (enfin sur les Windows français en tout cas). Or Java utilise l'encage par défaut du système et encode tout en cp1252 qui est incompatible avec le cp850...

Essayes de vérifier cela en utilisant le paramètre -Dfile.encoding=cp850 pour forcer l'utilisation du cp850.



Sinon pour vérifier que ton fichier class est bien compilé, tu peux simplement utiliser les composants Swing qui afficheront le texte correctement :
Code :
1
2
		String str = "Je préfère Linux pour compiler";
		JOptionPane.showMessageDialog(null, str);
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 14h06   #3
Membre du Club
 
Inscription : novembre 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 85
Points : 63
Points : 63
Un grand merci pour l'explication simple et complète, ainsi que pour la solution qui fonctionne parfaitement avec l'option -Dfile.encoding=cp850
sjachym est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 14h21   #4
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Citation:
Envoyé par sjachym Voir le message
Un grand merci pour l'explication simple et complète, ainsi que pour la solution qui fonctionne parfaitement avec l'option -Dfile.encoding=cp850
Attention toutefois car cela consiste à remplacer l'encodage par défaut.
Si tu lis/écris des fichiers sans préciser l'encodage c'est le cp850 qui sera utilisé !


A la rigueur tu peux faire changer l'encodage de la sortie par code seulement :
Code :
1
2
	System.setOut(new PrintStream(System.out, true, "cp850"));
	System.setErr(new PrintStream(System.err, true, "cp850"));
Ou utiliser la nouvelle classe Console de java 1.6...


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h18.


 
 
 
 
Partenaires

Hébergement Web