Unix Solaris :D
Version imprimable
Unix Solaris :D
Ok, ça aurait été une bonne idée de le dire tout de suite.
Tu n'es pas dans le bon forum car Solaris n'est pas Linux et ses commandes natives ne sont pas GNU ...
Ah ok ! Je ne savais pas, j'y penserai la prochaine fois ! :)
Exact, c'est bien $F[0], je me suis plantouiller dans le copier/coller...
Mais bon, a priori, cela ne résoud pas ton problème.
Pourrais-tu nous fournir le résultat de la commande suivante:
EDIT: Pas très utile en fait, si derrière c'est solarisCode:file - < <(echo -e "$lineControleEnveloppeCalendrier")
Pourquoi pas cette fois ci ? Tu peux demander à un modérateur de déplacer cette discussion dans l'un des forums appropriés:
http://www.developpez.net/forums/f88.../unix/solaris/ ou http://www.developpez.net/forums/f17...mmandes-posix/
Sinon, quelle est la version de Solaris utilisée -> cat /etc/release ?
Disedorgue, ta commande me renvoie une erreur :
En faisant la commande :Code:-: cannot open: No such file or directory
j'obtiens :Code:file <(echo -e "$lineControleEnveloppeCalendrier")
Code:/dev/fd/63: character special (346/63)
@jlliagre : la version
Solaris 10 10/09 s10s_u8wos_08a SPARC
Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 16 September 2009
Oui je vais faire la demande pour déplacer la conversation :)
La conversion marche pour moi sur Solaris 10:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $ cat /etc/release Oracle Solaris 10 8/11 s10x_u10wos_17b X86 Copyright (c) 1983, 2011, Oracle and/or its affiliates. All rights reserved. Assembled 23 August 2011 $ a="ééèè" $ printf "%s\n" $a | od -c 0000000 303 251 303 251 303 250 303 250 \n 0000011 $ printf "%s\n" $a | iconv -f UTF8 -t 8859-1 | od -c 0000000 351 351 350 350 \n 0000005 $ printf "%s\n" $a | iconv -f UTF-8 -t 8859-1 | iconv -f 8859-1 -t UTF-8 | od -c 0000000 303 251 303 251 303 250 303 250 \n 0000011
Bonjour jlliagre,
J'ai voulu essayer ta commande pour comparer, mais je n'arrive même pas à taper d'accent dans la console :cry:, pour information je me connecte via putty
En reprenant l'exemple de jlliagre, remplace la ligne:
par (si en bash): <== a préférer si tu veux voir les caractères accentué au lieu de caractère étrangeCode:$ a="ééèè"
par (si en ksh):Code:$ a=$(echo -e "\303\251\303\251\303\250\303\250")
EDIT:Code:a=$(echo "\0303\0251\0303\0251\0303\0250\0303\0250")
Soit dit en passant, chez moi, sur un " Solaris 10 5/09 s10s_u7wos_08 SPARC", la commande de jlliagre fonctionne ainsi que:
ou avec nawk:Code:
1
2
3 $ echo -e "t\303\251te\ntete" | LC_CTYPE="fr_FR.UTF-8" awk '{printf("%10s\n",$1)}' téte tete
Code:
1
2
3 echo -e "t\303\251te\ntete" | LC_CTYPE="fr_FR.UTF-8" nawk '{printf("%10s\n",$1)}' téte tete
J'ai le même problème depuis mon putty qui est bien en UTF8, j'arrive à copier/coller mais pas à les taper.
En bash, la touche reste inactive, en ksh, j'ai une traduction du caractère en 2 caractère ( ex: "é => C)" "è => C(" )
Sinon, j'ai bien une solution avec nawk, mais je préfère voir s'il peut s'en sortir avec ta solution, qui serait plus propre que mon workaround.
Vous semblez être tous les deux en locale C. La locale C (= POSIX), c'est de l'ASCII sur 7 bit, sans accents donc. Pas la meilleure approche pour travailler avec des caractères accentués.
Que disent:?Code:
1
2 locale stty -a
Pour ma part,
Code:
1
2
3
4
5
6
7
8
9 $ locale LANG=fr_FR.UTF-8 LC_CTYPE="fr_FR.UTF-8" LC_NUMERIC="fr_FR.UTF-8" LC_TIME="fr_FR.UTF-8" LC_COLLATE="fr_FR.UTF-8" LC_MONETARY="fr_FR.UTF-8" LC_MESSAGES="fr_FR.UTF-8" LC_ALL=
Si tu connais l'option coté control terminal qui m'active ça, je suis preneur...:)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 $ stty -a speed 38400 baud; rangées = 60 ; colonnes = 157 ; pixels_y = 0 ; pixels_x = 0 ; csdata ? eucw 1:0:0:0, scrw 1:0:0:0 intr = ^c; quit = ^\; erase = ^h; kill = ^u; eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^q; stop = ^s; susp = ^z; dsusp = ^y; rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v; -parenb -parodd cs8 -cstopb hupcl cread -clocal -loblk crtscts -crtsxoff -parext -ignbrk brkint -ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc ixon -ixany ixoff imaxbel isig icanon -xcase echo echoe echok -echonl -noflsh -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3
Au moins celle là:
Code:stty -istrip
Bon, j'ai trouvé l'astuce pour activé les caractères accentués sur le solaris depuis putty (la recette est à peu près ceci):
1) putty en mode UTF8
2) On positionne la locale comme il faut, par exemple en fr_FR.UTF-8:
3) on réinitialise le stty:Code:LANG=fr_FR.UTF-8
4) On fait un exec du shell que l'on utilise...Code:stty sane
Par exemple:
ouCode:exec /bin/ksh
Code:exec /usr/bin/bash
Bonjour disedorgue, bonjour jlliagre,
@jlliagre : mon putty est paramétré en UTF-8 mais cela ne change rien, j'obtiens les mêmes résultats que disedorgue (en bash).
Resultat de la commande 'locale'
Resultat de la commande 'stty -a'Code:
1
2
3
4
5
6
7
8 LANG= LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=
@disedorgue : putty en est mode UTF-8, j'ai placé la variable lang en UTF-8 (et vérifié avec un echo qu'elle etait bien en UTF-8), j'ai réinitialisé le stty et fait un exec pour le bash. Je ne pense pas que cela marche, quand je tape 'é' cela affiche 'C)' sur la console :)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 speed 38400 baud; rows = 24; columns = 80; ypixels = 0; xpixels = 0; csdata ? eucw 1:0:0:0, scrw 1:0:0:0 intr = ^c; quit = ^\; erase = ^h; kill = ^u; eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^q; stop = ^s; susp = ^z; dsusp = ^y; rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v; -parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk crtscts -crtsxoff -parext -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc ixon -ixany -ixoff imaxbel isig icanon -xcase echo echoe echok -echonl -noflsh -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3
Comme déjà indiqué, la locale C est une locale 7 bit, conçue uniquement pour afficher de l'anglais. Il faut que tu passes en UTF-8 pour pouvoir traiter tes caractères accentués correctement. Voici une méthode pour le faire:
Code:LC_ALL=fr_FR.UTF-8 exec $SHELL