Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

affichage des accents de Linux vers Windows

51 views
Skip to first unread message

dMc

unread,
Mar 4, 2011, 5:58:32 AM3/4/11
to
Bonjour,

J'ai eu la désagréable surprise de constater que les scripts écrits
sous Mandriva-Linux n'affichaient pas correctement ensuite les
caractères accentués du français sous Windows, alors que les scripts
écrits sous Windows étaient corrctement reconnus sous Linux!
Normalement le codage interne UTF-8 devrait rendre transparent ce type
de conversion. Comme je ne me sers de Windows que pour vérifier le
fonctionnement de mes scripts sous ce système, j'aurai bien besoin
d'une solution simple.

Je suppose le problème bien connu dans le monde Técleux : est-ce qu'il
y a deux lignes de code qui règlent le problème?


Amicalement
dMc

Vincent Verdon

unread,
Mar 4, 2011, 7:52:41 AM3/4/11
to
Bonjour,

Il y a la commande encoding system utf-8.
Malgré cela, c'est hélas un problème que je rencontre également. Enfin
pas tout à fait, je m'explique :
j'ai placé en tête de mes scripts la commande encoding system utf-8 qui
indique que l'encodage est de l'unicode. Ainsi, quel que soit l'OS, mes
scripts ont une accentuation correcte à l'exécution.
Mais c'est quand je les développe que je rencontre des problèmes. Quand
je passe de Linux à Windows, il y a toujours un moment où l'encodage
change (je ne sais plus dans quel sens) et mon code se retrouve avec de
beau caractères cabalistiques (de l'unicode en fait)... mais le code est
correct à l'exécution ... sauf que je suis embêté pour mettre ensuite
des accents dans mon script, vu que l'encodage est devenu batard.
Je me débrouille en général pour arranger les choses en passant par un
éditeur de texte qui "remet tout d'aplomb", mais je suis aussi très
ennuyé par ces problèmes.
Pour info, mon éditeur de code tcl favori est editt, sous les deux OS.

--
Amicalement, Vincent Verdon

Kroc

unread,
Mar 4, 2011, 4:34:25 PM3/4/11
to
Bonsoir,

Ton problème part d'une bonne intention. Tcl tente de deviner
l'encodage idéal en se fiant au système de fichiers sur lequel le
script est lu.

La bonne nouvelle, c'est qu'il y a une solution simple à ton
problème :

Tu écris un main.tcl (sans accent) qui va juste charger les autres
scripts en utilisant l'option encoding de la commande source :

source -encoding utf-8 mesaccents.tcl

Et le tour est joué.

--
David Zolli

dMc

unread,
Mar 5, 2011, 4:19:18 PM3/5/11
to
Bonsoir,

J'ai testé les 2 méthodes proposées :

* "encoding system utf-8 " en début de script ;
* fichier "main" avec la commande "source -encoding utf-8
[chemin ...fichier.tcl ] ";
La première solution ne fonctionne pas. Qu'ai-je oublié?
La seconde fonctionne parfaitement. mais je trouve dommage d'avoir
besoin d'un fichier-script supplémentaire.

Amicalement
dMc

Kroc

unread,
Mar 6, 2011, 12:55:27 PM3/6/11
to
Bonsoir,

Note que tu n'aurais pas ce genre de problème avec un langage mono
plate-forme : c'est une bien petite contrainte pour un tel
avantage. ;^)

En fait, la vraie règle c'est de ne JAMAIS utiliser d'accent dans un
script Tcl. En fait, on devrait toujours écrire notre code en ascii
avec les messages en anglais et utiliser des fichiers msg et le
package msgcat pour charger les traductions accentués (car Tcl charge
toujours les fichiers .msg en utf-8).

Pour plus d'infos sur msgcat, voir http://wfr.tcl.tk/msgcat

En ce qui concerne ta remarque sur la contrainte d'utiliser plusieurs
fichiers, c'est, à mon sens, une nécessité dès lors que tu codes
quelque chose d'un peu sérieux (plus complexe qu'un bout de code d'une
centaine de lignes). Ne serait-ce que pour respecter ce genre de
méthode : http://wfr.tcl.tk/1655

Ciao,

--
David Zolli

Vincent Verdon

unread,
Mar 6, 2011, 3:50:21 PM3/6/11
to
Le 05/03/2011 22:19, dMc a écrit :
> Bonsoir,
>
> J'ai testé les 2 méthodes proposées :
>
> * "encoding system utf-8 " en début de script ;
> * fichier "main" avec la commande "source -encoding utf-8
> [chemin ...fichier.tcl ] ";
> La première solution ne fonctionne pas. Qu'ai-je oublié?

Je suis bien étonné.

> La seconde fonctionne parfaitement. mais je trouve dommage d'avoir
> besoin d'un fichier-script supplémentaire.

Personnellement, j'utilise toujours (dans une appli d'un peu d'ampleur)
un script qui démarre ensuite les autres. Ce script commence par
quelques initialisations et récupération du répertoire de lancement de
l'application exemple, puis appelle ce qui l'être.

--
Amicalement, Vincent Verdon

dMc

unread,
Mar 6, 2011, 6:26:52 PM3/6/11
to
Bonsoir,

J'ai bien compris le système et j'en ai profité pour regarder de plus
près la notion d'encodage que je n'avais pas eu l'occasion de tutoyer.
Je n'avais ces jours-ci à faire effectivement qu'un petit programme
pour un enfant et rien ne justifiait l'usage de msgcat. Je code en
ascci pour les noms de variables, mais hélas le français de
l'interface demande encore quelquefois des accents. De plus je ne
maitrise pas assez l'anglais pour ne pas souffrir à vouloir écrire
inutilement des messages dans cette langue, destinés à quelqu'un qui
ne la comprend pas du tout.
En revanche j'apprécie que le code TCL soit multiplateformes, c'est
d'aiileurs une des raisons pour lesquelles je m'en sers. J'avais codé
sous Windows et transporté mon code sous Linux et BSD sans problèmes.
Je viens de découvrir la -légère- contrainte qu'il y a à faire
l'inverse.
Mais la solution est simple.

Amicalement
dMc

fradi...@orange.fr

unread,
Apr 11, 2011, 4:36:14 AM4/11/11
to

Bonjour,

je viens d'être confronté au problème (que je n'avais plus depuis
longtemps...) avec le caractère ô entre Linux Fedora 14 et Windows XP
Pro. Je soupçonne quand même l'encodage d'emacs (ISO Latin 1 sous
Windows et UTF-8 sous Linux) d'être à l'origine de ce problème.

Une autre solution consiste à écrire les caractères accentués en
unicode dans le texte avec \u mais ce n'est pas très pratique.

J'ai testé la solution source -encoding utf-8 qui marche bien et ne
modifie en rien mon code puisque j'ai fait cette modification (via un
makefile) dans les fichiers tclIndex et pkgIndex.tcl de mes
applications. C'est transparent et ne nécessite que la modification du
Makefile.

Cordialement

Patrick Fradin

0 new messages