OVH Cloud OVH Cloud

caractères accentués

20 réponses
Avatar
Marc Desforets
J'aimerais bien pouvoir écrire les caractères accentués avec Java.
Par exemple : "conçu et né en août".
Lorsque j'écris ça dans une fenêtre ou sur System.out, j'obtient :
con?u et n? en ao?t
Comment faire pour que Java parle français ?

J'utilise le J2SE 1.4.2_04 sous Linux.

Merci bien.

--
desforetsATwanadoo.fr

10 réponses

1 2
Avatar
Alain Labarthe
Le 08-09-2004, olivier girant écrivait:
YSMAL Vincent wrote:
Re bonjour
pour être sur,
un : echo coucou èàé
dans votre console linux .... ca donne quoi ... ?


Ca donne pas ! Il se passe que je ne peux pas écrire de caractère
accentué dans le terminal, ça bip ! Par contre si je lance vi par
exemple dans ma console, je peux écrire des accents.

Je fais un fu2 vers fcolc car ça dépasse le cadre d'un simple programme
java qui refuse d'afficher System.out.println("coucou èàé").

Quelles sont les polices par défaut de la console ?

dans /etc/console-tools/config (sur une debian)

--
apt-get --purge remove Bush


Avatar
olivier girant
Alain Labarthe wrote:
Le 08-09-2004, olivier girant écrivait:

YSMAL Vincent wrote:

Re bonjour
pour être sur,
un : echo coucou èàé
dans votre console linux .... ca donne quoi ... ?


Ca donne pas ! Il se passe que je ne peux pas écrire de caractère
accentué dans le terminal, ça bip ! Par contre si je lance vi par
exemple dans ma console, je peux écrire des accents.

Je fais un fu2 vers fcolc car ça dépasse le cadre d'un simple programme
java qui refuse d'afficher System.out.println("coucou èàé").



Quelles sont les polices par défaut de la console ?
dans /etc/console-tools/config (sur une debian)


Sur ma machine, le fichier ne contient que des commentaires, les
explications sur le contenu du fichier, mais je n'ai pas bien compris.
Que dois-je mettre pour pouvoir taper des accents dans la console ?

oliv



Avatar
Nicolas George
olivier girant wrote in message
<413eb1c7$0$15553$:
Ca donne pas ! Il se passe que je ne peux pas écrire de caractère
accentué dans le terminal, ça bip ! Par contre si je lance vi par
exemple dans ma console, je peux écrire des accents.


Que dit la commande « locale » ?

Lancer « xxd », taper des caractères accentués, puis entrée, et Ctrl-D : que
se passe-t-il ?

Avatar
Alain Labarthe
Le 08-09-2004, olivier girant écrivait:
Alain Labarthe wrote:
Le 08-09-2004, olivier girant écrivait:

YSMAL Vincent wrote:

Re bonjour
pour être sur,
un : echo coucou èàé
dans votre console linux .... ca donne quoi ... ?


Ca donne pas ! Il se passe que je ne peux pas écrire de caractère
accentué dans le terminal, ça bip ! Par contre si je lance vi par
exemple dans ma console, je peux écrire des accents.

Je fais un fu2 vers fcolc car ça dépasse le cadre d'un simple programme
java qui refuse d'afficher System.out.println("coucou èàé").



Quelles sont les polices par défaut de la console ?
dans /etc/console-tools/config (sur une debian)


Sur ma machine, le fichier ne contient que des commentaires, les
explications sur le contenu du fichier, mais je n'ai pas bien compris.
Que dois-je mettre pour pouvoir taper des accents dans la console ?



Cela dépend de deux choses:

- Le "mappage" du clavier, mais qui dans votre cas semble être
correct puisque les caractères s'affichent correctement avec vi.

- Les polices employées en mode "console". Dans le fichier que je
vous ai indiqué vous devez avoir quelque chose comme:

# Set the following - more euro-friendly default than kernel font.
# SCREEN_FONT=latcyrheb=sun16.psf

En decommentant la dernière ligne ce devrait être ok ou alors
cherchez la police qui vous convient dans le répertoire des polices.

Pour activer la configuration il faudra redémarrer le service:
/etc/init.d/console-screen restart


--
apt-get --purge remove Bush




Avatar
Olivier Girant
Nicolas George wrote:
Que dit la commande « locale » ?

Lancer « xxd », taper des caractères accentués, puis entrée, et Ctrl-D : que
se passe-t-il ?


:~$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL :~$ xxd
éàçèùô
0000000: e9e0 e7e8 f9f4 0a .......
:~$

J'ai l'impression que les programmes utilisent bien les accents, mais
pas l'éditeur de ligne de commande...

oliv

Avatar
Olivier Girant
Alain Labarthe wrote:
Cela dépend de deux choses:

- Le "mappage" du clavier, mais qui dans votre cas semble être
correct puisque les caractères s'affichent correctement avec vi.

- Les polices employées en mode "console". Dans le fichier que je
vous ai indiqué vous devez avoir quelque chose comme:

# Set the following - more euro-friendly default than kernel font.
# SCREEN_FONT=latcyrheb=sun16.psf

En decommentant la dernière ligne ce devrait être ok ou alors
cherchez la police qui vous convient dans le répertoire des polices.

Pour activer la configuration il faudra redémarrer le service:
/etc/init.d/console-screen restart


Merci pour cette aide, mais ça n'a rien fait, AltGr+E me donne un point
d'interrogation, alors qu'avant on ne pouvait pas faire cette combinaison
du tout.

oliv

Avatar
Nicolas George
Olivier Girant wrote in message
<4141d79a$0$20449$:
J'ai l'impression que les programmes utilisent bien les accents, mais
pas l'éditeur de ligne de commande...


Ça en a tout l'air. Serait-ce bash ? Dans ce cas, mettre dans /etc/inputrc
ou ~/.inputrc ces deux lignes :

set input-meta on
set output-meta on

peut aider. Un « export LC_CTYPE=fr_FR » peut faire du bien également
(éventuellement « exec $SHELL » ensuite).

Avatar
Olivier Girant
Nicolas George wrote:
Ça en a tout l'air. Serait-ce bash ? Dans ce cas, mettre dans /etc/inputrc
ou ~/.inputrc ces deux lignes :

set input-meta on
set output-meta on

peut aider. Un « export LC_CTYPE=fr_FR » peut faire du bien également
(éventuellement « exec $SHELL » ensuite).


J'ai finalement exécuté : dpkg-reconfigure locales, ça m'a écrit la ligne
LANG=FR_fr dans /etc/environment, à présent j'ai LC_CTYPE=fr_FR et ça
marche nickel à présent ! Merci !

oliv

Avatar
Marc Desforets
Finalement, j'ai trouvé une solution qui marche sous Linux, avec JRE
1.4.2_04.
Il faut utiliser les OutputStreamWriter avec le charset ISO8859_1
ET compiler avec le charset ISO8859_1.
L'avantage est que c'est complètement portable. Il n'y a rien de spécial à
faire à l'exécution.
Merci à tous !

// Exemple de programme avec les accents (encodage ISO8859_1).
// Environnement utilisé : J2SE 1.4.2_04 sous Linux
// Production et exécution :
// $ javac -encoding ISO8859_1 accent.java
// $ java accent
// ùçéèàêæ
// ???????
// $
//
import java.io.*

class accent {
public static void main(String[] args) {
try {
PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out,
"ISO8859_1"));
pw.println("ùçéèàêu00e6");
pw.flush();
System.out.println("ùçéèàêu00e6");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Avatar
jvedie
olivier girant wrote in message news:<41387bc5$0$13696$...
Real Gagnon wrote:
J'ai cru comprendre qu'il y avait un moyen plus simple avec une option
de la ligne de commande de java ou bien une propriété système à mettre
au début du programme, si quelqu'un sait, je suis preneur.



java -Dfile.encoding=encodingrecherche MyApp

Bye.


:~/java$ java Accents <- le programme de mon précédent post
conçu et né en août
:~/java$ cat hello.java
class hello {
public static void main(String[] args) {
System.out.println("Coucou éèù");
}
}
:~/java$ javac -encoding ISO-8859-1 hello.java
:~/java$ java -Dfile.encoding=ISO-8859-1 hello
Coucou ???
:~/java$ export LANG=fr
:~/java$ java -Dfile.encoding=ISO-8859-1 hello
Coucou ???
:~/java$ java hello
Coucou ???
:~/java$ export LANG=Fr
:~/java$ java -Dfile.encoding=ISO-8859-1 hello
Coucou ???
:~/java$ java hello
Coucou ???
:~/java$ ouinnnnnnnnnn
bash: ouinnnnnnnnnn: command not found

oliv


j'ai eu le même problème lorsque j'ai voulu envoyer des mails via
Javamail : tous mes accents étaient remplacés par des '?'

Ce que j'ai fait :
Par défaut l'encodage est sur 7bits. Or en francais la présence des
accents oblige l'encodage sur 8bits afin de les prendre en compte.
Sur mon objet MimeBodyPart j'ai donc forcé cet encodage.
mbpBody.setHeader("Content-Transfert-Encoding", "8Bit");

Ensuite j'ai forcé l'utilisation de l'alphabet selon le norme
iso-8859-1
mbpBody.setText(theBody, "iso-8859-1");

Maintenant si tu veux avoir des accents dans l'objet de ton mail,
c'est une autre histoire.
J'ai dû utiliser l'encodage 'Quoted-Printable'
La syntaxe est la suivante : =?Indication de l'alphabet?Q?Le mot au
format Quoted-Printable? Lorsque plusieurs mots consécutifs contiennent des caractères
accentués, on peut utiliser le caractère «_» en lieu et place de
l'espace.
On peut également coder en base64, le format est alors : =?Indication
de l'alphabet?B?Le mot au format Base 64? Avec iso-8859-1 pour l'alphabet, é pour les é, ô pour les ô

Voilou, en espérant t'avoir aidé.
Julien.



1 2