Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Invite de commande et caractères accentués

19 réponses
Avatar
Michel Such
Bonjour à tous,

Voilà, j'ai un petit pb .
Je suis sous xp pro . Dans l'invite de commande ou dans un éditeur dos lancé
depuis la ligne de commande, les caractères accentués tels que é è ou autre
n'apparaissent pas correctement .
Y aurait-il quelque chose à faire .
chcp m'indique un code page 850 qui me paraît de bon aloi .

--
Ôà

9 réponses

1 2
Avatar
CriCri
Salut

William Marie a écrit :
>
> Là il n'y a rien à faire...



Bien sûr il y a quelque chose à faire - toujours d'ailleurs... ;-)
Au lieu de faire un
printf( "é" );
on utilise le code du caractère voulu dans la CP850.
P. ex. pour 'é' on peut écrire
printf( "202" );
...et ainsi de suite.

Si en Java ça sort comme un thêta c'est que le compilateur/interpréteur
est amerloque et traduit les caractères vers la CP437 (Etats-Unis).

> Ceci dit en HTML évolué on force le code de caractère que l'on veut.



En HTML _simple_ on n'utilise _pas_ de codes de caractères: "&eacute"
passe partout.

Amicalement
CriCri
--
bitwyse
"Être sage, ça peut être con des fois..."
http://www.le-maquis.net
Avatar
CriCri
Salut

William Marie a écrit :
>
> Là il n'y a rien à faire...



Bien sûr il y a quelque chose à faire - toujours d'ailleurs... ;-)
Au lieu de faire un
printf( "é" ):
on utilise le code du caractère voulu dans la CP850.
P. ex. pour 'é' on peut écrire
printf( "202" );
...et ainsi de suite.

Si en Java ça sort comme un thêta c'est que le compilateur/interpréteur
est amerloque et traduit les caractères vers la CP437 (Etats-Unis).

> Ceci dit en HTML évolué on force le code de caractère que l'on veut.



En HTML _simple_ on n'utilise _pas_ de codes de caractères: "é"
passe partout.

Amicalement
CriCri
--
bitwyse
"Être sage, ça peut être con des fois..."
http://www.le-maquis.net
Avatar
CriCri
Salut

William Marie a écrit :
>
> Là il n'y a rien à faire...



Bien sûr il y a quelque chose à faire - toujours d'ailleurs... ;-)
Au lieu de faire un
printf( "é" );
on utilise le code du caractère voulu dans la CP850.
P. ex. pour 'é' on peut écrire
printf( "202" );
...et ainsi de suite.

Si en Java ça sort comme un thêta c'est que le compilateur/interpréteur
est amerloque et traduit les caractères vers la CP437 (Etats-Unis).

> Ceci dit en HTML évolué on force le code de caractère que l'on veut.



En HTML _simple_ on n'utilise _pas_ de codes de caractères: "é"
passe partout.

Amicalement
CriCri
--
bitwyse
"Être sage, ça peut être con des fois..."
http://www.le-maquis.net
Avatar
Useur lambda
Ainsi parla CriCri :
Bien sûr il y a quelque chose à faire - toujours d'ailleurs... ;-)
Au lieu de faire un
printf( "é" );
on utilise le code du caractère voulu dans la CP850.
P. ex. pour 'é' on peut écrire
printf( "202" );
...et ainsi de suite.



T'as p'têt raison. Cependant, s'il faut rédiger tous les messages avec
des machins à échappement, ça devient vite assommant!

Si en Java ça sort comme un thêta c'est que le compilateur/interpréteur
est amerloque et traduit les caractères vers la CP437 (Etats-Unis).



P'têt aussi. Mais j'n'ai pas trop envie de tripatouiller les réglages de
l'interpréteur. Il écrit correctement dans les fichiers et c'est le principal.
C'est d'ailleurs la raison pour laquelle j'inclinerai plutôt à agir sur
la fenêtre de commande bien windosienne, mais si on peut pas, on peut pas!
Tant pis et merci à tous deux.
Avatar
CriCri
Salut

Useur lambda a écrit :

Cependant, s'il faut rédiger tous les messages avec des machins à
échappement, ça devient vite assommant!



Euhhh... tu rédiges tes messages avec un prog en Java? ;-)

P'têt aussi. Mais j'n'ai pas trop envie de tripatouiller les réglages
de l'interpréteur.



Pour programmer on pourrait se bricoler des macros pour faire le
nécessaire... ou bien une fonction pour traiter une chaîne et
transformer les caractères accentués en valeurs CP850.
Il suffirait par exemple de créer 'cp850.h' (une fois pour toutes) puis
utiliser une grille pour substituer les échappements aux chars voulus.

Amts
CriCri

--
bitwyse
"Être sage, ça peut être con des fois..."
http://www.le-maquis.net
Avatar
Useur lambda
Ainsi parla CriCri :
Euhhh... tu rédiges tes messages avec un prog en Java? ;-)



Vi! Tous! et notamment ma lettre à Papa Noël :-)

Pour programmer on pourrait se bricoler des macros pour faire le
nécessaire... ou bien une fonction pour traiter une chaîne et
transformer les caractères accentués en valeurs CP850.
Il suffirait par exemple de créer 'cp850.h' (une fois pour toutes) puis
utiliser une grille pour substituer les échappements aux chars voulus.



Y'a de l'idée. Un batch qui enverrait le fichier source à un pré-compilateur
d'échappement avant de le passer au compilateur. Faudrait aussi penser
à laisser tels quels les caractères accentués qui ne sont pas dans des messages.
Un peu tordu quand même :-)
Avatar
CriCri
Salut

Useur lambda a écrit :

Y'a de l'idée. Un batch qui enverrait le fichier source à un pré-compilateur
d'échappement avant de le passer au compilateur. Faudrait aussi penser
à laisser tels quels les caractères accentués qui ne sont pas dans des messages.
Un peu tordu quand même :-)



Vivi, bôôôcoup trop ;-)

Moi je voyais plutôt simple
(pour 'C', j'ai oublié tout le Java que j'ai jamais connu)
du genre:

--------
char tab_cp850[ 0x100 ][ 5 ];

for ( int i = 0; i < 0x100; i++ )
tab_cp850[ i ][ 0 ] = i; // initialiser le tableau
/* ...puis on remplace les valeurs pour les caractères accentuées avec
"xnn" (p. ex. 'é' == "x82") */
.
.
.
char *cp850( char *s )
{
static char t[ MAXSTRLEN ] = "";

for ( int i = 0; i < (int)strlen( s ); i++ )
strcat( t, tab_cp850[ s[i] ] );

return t;
}
.
.
.
printf( cp850( "Ma lettre privée à Père Noëln" ) );

--------
(faudrait peut-être peaufiner toussa...)

C'est pas trop compliqué, ça...

Amts
CC

--
bitwyse
"Être sage, ça peut être con des fois..."
http://www.le-maquis.net
Avatar
Useur lambda
Ainsi parla CriCri :
Moi je voyais plutôt simple
(pour 'C', j'ai oublié tout le Java que j'ai jamais connu)
du genre:

--------

[snip]... plein de jolies choses...

--------
(faudrait peut-être peaufiner toussa...)

C'est pas trop compliqué, ça...



Hélas, la barrière des langages m'empêche d'apprécier à leur juste valeur
la subtile délicatesse et l'élégante simplicité de ton art poétique.

Néanmoins, en m'appuyant sur l'origine indo-européenne commune de nos dialectes
respectifs, je pense avoir saisi l'essence de ta pensée : on crée une fonction
de transcodage par laquelle on fait transiter les chaînes de caractères
destinées à atterrir dans la console.
C'est valable, mais ça implique donc de penser au niveau du source à insérer
l'appel devant toutes les chaînes choisies et, en Java, d'importer la classe
qui contient la fonction dans toutes les classes incriminées.

Ce serait tellement plus simple si cette saleté de fenêtre de commande pouvait
faire ça toute seule!
Avatar
CriCri
"Sigmaalphalambdaupsilontau"

Useur lambda a écrit :

[snip]... plein de jolies choses...





Ô que c'est bô, le langage des fleurs...

...la subtile délicatesse et l'élégante simplicité de ton art
poétique.



:-)

Néanmoins, en m'appuyant sur l'origine indo-européenne commune de nos
dialectes respectifs, je pense avoir saisi l'essence de ta pensée :



Moi pas parler javanais.
Toi pas parler abc.
Nous parler françois ...euhhh, pardon, pseudo-code.
Nous se comprendre bien :-)

C'est valable, mais ça implique donc de penser au niveau du source à
insérer l'appel devant toutes les chaînes choisies...



Vi. Si c'est du code existant, ça serait assez emm...ielleux.
Si c'est du nouveau on pourrait faire un truc comme:
--------
#define POUR_CP850 1 // ou 0 - selon

#if POUR_CP850
#define CP850(s) (cp850(s))
#else
#define CP850(s) (s)
#endif

// puis systématiquement
printf( CP850( "Ma lettre àâçéèêîôù..." ) );
// pour faire une compilation conditionnelle.
--------

Doit y avoir du javanais semblable, non?
Bien évidemment, l'effort qu'on peut justifier dépend de l'importance du
résultat... pour moi franchement pas grand-chose ;-)

en Java, d'importer la classe qui contient la fonction dans toutes
les classes incriminées.



Aaaargh!!! - c'est pour ça que je déteste C++ quand je suis obligé d'y
pénétrer... :-(

Ce serait tellement plus simple si cette saleté de fenêtre de
commande pouvait faire ça toute seule!



Ahhhh... plein de choses seraient tellement plus simples si...
...mais c'est ça la vie...

Amts
CC

--
bitwyse
"Être sage, ça peut être con des fois..."
http://www.le-maquis.net
1 2