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

bash et UTF-8

12 réponses
Avatar
PII 233
Bonjour,

j'utilise putty pour me logger en ssh sur un serveur woody.
La version de bash est :
# bash --version
GNU bash, version 2.05a.0(1)-release (i386-pc-linux-gnu)
Copyright 2001 Free Software Foundation, Inc.

J'ai configur=C3=A9 ma locale en UTF-8.

Lorsque je tape la s=C3=A9quence de caract=C3=A8res "ls a=C3=A9" sur la l=
igne de=20
commande, j'ai des caract=C3=A8res "ls a=C3=A9" qui sont correctement aff=
ich=C3=A9s.
Maintenant, je tape backspace pour effacer le "=C3=A9" et je le remplace =
par=20
"2". J'ai les caract=C3=A8res "ls a2" qui sont donc affich=C3=A9s.
Je valide la commande, et bash me retourne une erreur :

# ls a2
ls: a=E2=96=922: Cha=C3=AEne multi-octets ou =C3=A9tendue de caract=C3=A8=
res invalide ou incompl=C3=A8te

Comme vous le voyez, il y a un caract=C3=A8re pourri qui a =C3=A9t=C3=A9 =
ins=C3=A9r=C3=A9, comme=20
si le caract=C3=A8re cod=C3=A9 sur 2 octets n'avait =C3=A9t=C3=A9 que par=
tiellement supprim=C3=A9.

Je n'ai pas du tout ce comportement sous vim, qui est configur=C3=A9 pour=
=20
fonctionner en UTF-8. De m=C3=AAme pour putty.

En faisant quelques recherches, j'ai constat=C3=A9 que l'auteur de putty =

mettait en garde les utilisateurs sur des incompatibilit=C3=A9s possibles=
de=20
certaines applications avec unicode.
En cherchant du c=C3=B4t=C3=A9 de bash, j'ai trouv=C3=A9 le patch suivant=
:
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b-patches/bash205b-007

H=C3=A9 ! =C3=A7a ressemble =C3=A0 un patch pour mon probl=C3=A8me.

Le truc, c'est qu'une version 2.05b, il n'y en a pas en paquet, visibleme=
nt.
Par ailleurs, si je regarde le paquet debian 2.05a, c'est une version=20
patch=C3=A9e, =C3=A0 la debian, j'ai l'impression :
# apt-cache showpkg bash
Package: bash
Versions:
3.0-3(/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_unstable_main_bin=
ary-i386_Packages)
2.05a-11(/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_stable_main_bi=
nary-i386_Packages)(/var/lib/dpkg/status)

il y a en effet un "-11" qui suit, comme si c'=C3=A9tait la 11=C3=A8me ve=
rsion du=20
2.05a pour woody.

Bref, je ne sais pas trop quoi penser : est-ce que le patch 7 pour la=20
2.05b aurait =C3=A9t=C3=A9 appliqu=C3=A9 =C3=A0 la 2.05a-11, et que donc =
le bug existe=20
toujours ? ou bien faut-il que je compile un bash moi-m=C3=AAme ?
=C3=87a m'ennuie de devoir compiler le shell sur lequel presque tout le r=
este=20
repose, en cas de bug corrig=C3=A9 dans les patches "-11", mais pas en 2.=
05b=20
prise sur le site de gnu.

Il y a peut-=C3=AAtre un moyen plus simple de corriger le probl=C3=A8me, =
tout en=20
restant en UTF-8 ? genre virer le mode vi, mais je n'ai pas compris=20
comment =C3=A7a marchait.

Je donc suis =C3=A0 l'=C3=A9coute de vos conseils avis=C3=A9s :)
--=20
pii 233

10 réponses

1 2
Avatar
Mezig
PII 233 wrote:

Bonjour,

j'utilise putty pour me logger en ssh sur un serveur woody.
La version de bash est :
# bash --version
GNU bash, version 2.05a.0(1)-release (i386-pc-linux-gnu)
Copyright 2001 Free Software Foundation, Inc.

J'ai configuré ma locale en UTF-8.



C pour ça qu'il y a 1 arbre de noel de caractères bizares, non ?
What about ISO 8859-15 ?

Lorsque je tape la séquence de caractères "ls aé" sur la ligne de
commande, j'ai des caractères "ls aé" qui sont correctement affichés.
Maintenant, je tape backspace pour effacer le "é" et je le remplace
par "2". J'ai les caractères "ls a2" qui sont donc affichés.
Je valide la commande, et bash me retourne une erreur :

# ls a2
ls: aâ??2: Chaîne multi-octets ou étendue de caractères invalide ou
incomplète

Comme vous le voyez, il y a un caractère pourri qui a été inséré,
comme si le caractère codé sur 2 octets n'avait été que
partiellement supprimé.

Je n'ai pas du tout ce comportement sous vim, qui est configuré pour
fonctionner en UTF-8. De même pour putty.

En faisant quelques recherches, j'ai constaté que l'auteur de putty
mettait en garde les utilisateurs sur des incompatibilités possibles
de certaines applications avec unicode.
En cherchant du côté de bash, j'ai trouvé le patch suivant :
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b-patches/bash205b-007

Hé ! ça ressemble à un patch pour mon problème.

Le truc, c'est qu'une version 2.05b, il n'y en a pas en paquet,
visiblement.
Par ailleurs, si je regarde le paquet debian 2.05a, c'est une version
patchée, à la debian, j'ai l'impression :
# apt-cache showpkg bash
Package: bash
Versions:
3.0-3(/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_unstable_main_binary-i386_Packages)

2.05a-11(/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_stable_main_binary-i386_Packages)(/var/lib/dpkg/status)


il y a en effet un "-11" qui suit, comme si c'était la 11ème version
du 2.05a pour woody.

Bref, je ne sais pas trop quoi penser : est-ce que le patch 7 pour la
2.05b aurait été appliqué à la 2.05a-11, et que donc le bug existe
toujours ? ou bien faut-il que je compile un bash moi-même ?
Ã?a m'ennuie de devoir compiler le shell sur lequel presque tout le
reste repose, en cas de bug corrigé dans les patches "-11", mais pas
en 2.05b prise sur le site de gnu.

Il y a peut-être un moyen plus simple de corriger le problème, tout
en restant en UTF-8 ? genre virer le mode vi, mais je n'ai pas compris
comment ça marchait.

Je donc suis à l'écoute de vos conseils avisés :)



Voir + haut, si ce n'est pas carrément 1 pb de locales ?
Any other advises ?

Mi


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Michelle Konzack
--Ms5iOKSBOB9YS8zC
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Am 2004-07-31 13:35:35, schrieb PII 233:
Bonjour,

j'utilise putty pour me logger en ssh sur un serveur woody.
La version de bash est :
# bash --version
GNU bash, version 2.05a.0(1)-release (i386-pc-linux-gnu)
Copyright 2001 Free Software Foundation, Inc.

J'ai configuré ma locale en UTF-8.

Lorsque je tape la séquence de caractères "ls aé" sur la ligne de
commande, j'ai des caractères "ls aé" qui sont correctement affiché s.
Maintenant, je tape backspace pour effacer le "é" et je le remplace par
"2". J'ai les caractères "ls a2" qui sont donc affichés.
Je valide la commande, et bash me retourne une erreur :

# ls a2
ls: a???2: Chaîne multi-octets ou étendue de caractères invalide ou
incomplète



____ ( '~/.bach_profile' ) ___________________________________________
/
| export LANG=fr_FR.UTF-8
| export LANGUAGE=fr_FR.UTF-8
| export LC_MESSAGES=fr_FR.UTF-8
|
| consolechars --font=LarArCyrHeb-16
| unicode_start
______________________________________________________________________

:-)


Comme vous le voyez, il y a un caractère pourri qui a été insér é, comme
Il y a peut-être un moyen plus simple de corriger le problème, tout e n
restant en UTF-8 ? genre virer le mode vi, mais je n'ai pas compris
comment ça marchait.

Je donc suis à l'écoute de vos conseils avisés :)




Greetings
Michelle

--
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack Apt. 917 ICQ #328449886
50, rue de Soultz MSM LinuxMichi
0033/3/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)

--Ms5iOKSBOB9YS8zC
Content-Type: application/pgp-signature; name="signature.pgp"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBC/fJC0FPBMSS+BIRAqLXAKCpZV2HOHjSV4yWG2nXgpPLQbNodwCgqFGL
NGdekLm9qzUT91tjt2WEBG4 Öd6
-----END PGP SIGNATURE-----

--Ms5iOKSBOB9YS8zC--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
PII 233
Bonjour,

Michelle Konzack wrote:

____ ( '~/.bach_profile' ) __________________________________________ _
/
| export LANG=fr_FR.UTF-8


c'est déjà le cas chez moi :
$ echo $LANG
fr_FR.UTF-8

en fait, j'ai suivi un howto comme
<http://melkor.dnp.fmph.uniba.sk/~garabik/debian-utf8/HOWTO/howto.html>


| export LANGUAGE=fr_FR.UTF-8
| export LC_MESSAGES=fr_FR.UTF-8


pas ces deux là, qui normalement sont optionnels.
Je les ai settés pour tester, sans incidence négative ou positive.

| consolechars --font=LarArCyrHeb-16
| unicode_start


j'ai l'impression que ces commandes sont destinées pour la console, pas
pour une session distante (via putty par exemple) :

$ consolechars --font=LarArCyrHeb-16
Couldnt get a file descriptor referring to the console
get_console_fd: Argument invalide
$ unicode_start
Couldnt get a file descriptor referring to the console
Couldnt get a file descriptor referring to the console
is_in_UTF8_mode: Ioctl() inappropré pour un périphérique
Already in UTF8 mode

et le message d'erreur d'unicode_start indique bien que je suis déjà en
UTF-8.

_____________________________________________________________________ _

:-)


j'aimerais bien :)

Merci de la suggestion, et je retiens le consolechars pour le jour où
j'irai sur la console (j'espère jamais : ça voudrait dire une big pan ne).

--
pii233
Avatar
Michelle Konzack
--J/dobhs11T7y2rNN
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Bonjour,

Am 2004-08-01 11:32:47, schrieb PII 233:
Bonjour,



>| consolechars --font=LarArCyrHeb-16



Oops... il est LatArCyrHeb-16

>| unicode_start
j'ai l'impression que ces commandes sont destinées pour la console, pas
pour une session distante (via putty par exemple) :

$ consolechars --font=LarArCyrHeb-16
Couldnt get a file descriptor referring to the console
get_console_fd: Argument invalide



C'est: LatArCyrHeb-16

$ unicode_start
Couldnt get a file descriptor referring to the console
Couldnt get a file descriptor referring to the console
is_in_UTF8_mode: Ioctl() inappropré pour un périphérique
Already in UTF8 mode

et le message d'erreur d'unicode_start indique bien que je suis déjà en
UTF-8.



Deja esseyer: /usr/bin/vt-is-UTF8

Merci de la suggestion, et je retiens le consolechars pour le jour où
j'irai sur la console (j'espère jamais : ça voudrait dire une big pan ne).




Greetings
Michelle

--
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack Apt. 917 ICQ #328449886
50, rue de Soultz MSM LinuxMichi
0033/3/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)

--J/dobhs11T7y2rNN
Content-Type: application/pgp-signature; name="signature.pgp"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBDPY7C0FPBMSS+BIRApKnAJ4lzKN23pPghmp9Z3oCgsnHb9cj4QCdHkG5
2TWkMl9bxHOrxepDSMUysqU =OVKO
-----END PGP SIGNATURE-----

--J/dobhs11T7y2rNN--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
PII 233
Bonjour,

Michelle Konzack wrote:


| consolechars --font=LarArCyrHeb-16






Oops... il est LatArCyrHeb-16



peut-être, mais je ne suis toujours pas sur la console, mais avec un
terminal distant, donc, même situation, même punition :
$ consolechars --font=LatArCyrHeb-16
Couldnt get a file descriptor referring to the console
get_console_fd: Argument invalide

La console utilise /dev/console ou /dev/ttyN, et moi je passe par un
/dev/pts . Enfin, c'est la conclusion à laquelle j'arrive, je ne sais
pas si elle est exacte :)

Deja esseyer: /usr/bin/vt-is-UTF8



$ /usr/bin/vt-is-UTF8
Couldnt get a file descriptor referring to the console
is_in_UTF8_mode: Ioctl() inappropré pour un périphérique

--
pii233
Avatar
Laurent Giroud
On Sat, 31 Jul 2004 15:10:04 +0200, Mezig wrote:

> J'ai configuré ma locale en UTF-8.
>
C pour ça qu'il y a 1 arbre de noel de caractères bizares, non ?
What about ISO 8859-15 ?



C'est à éviter au maximum.
Les codes ISO 8859-X sont des codes locaux, qui ne permettent pas de gérer les textes internationaux.

Il vaut mieux passer à l'encodage Unicode UTF-8 qui permet de coder tous les symboles internationaux de 8 à 32 bits et permet de conserver des textes "latins" d'une taille similaire à celle de l'ASCII ou de l'ISO 8859-15.

Actuellement, c'est encore imparfaitement géré par Linux et un paquet de programmes libres, heureusement ça change doucement.
Hélas, assez peu de gens savent ce que c'est et ce que ça permet et donc retombent sur des standards nationaux d'encodage du texte tous incompatibles entre eux...

> Je donc suis à l'écoute de vos conseils avisés :)

Voir + haut, si ce n'est pas carrément 1 pb de locales ?
Any other advises ?



C'est plutôt soit un problème de gestion de l'UTF-8 par la console, le terminal ou bash, à l'heure actuelle aucun des trois ne gère parfaitement tout ça, donc il faut configurer à la main. Apparemment, c'est en cours de travail chez Debian pour qu'on passe progressivement à un système 100% Unicode UTF-8 sans que les utilisateurs n'aient à configurer leurs programmes à la main.

A ce sujet, ayons une pensée pour nos amis asiatiques qui se battent avec ces problèmes tous les jours car l'essentiel des logiciels sont conçus par des occidentaux pour des occidentaux et souvent par des américains qui ignorent tous des caractères accentués et encore plus des symboles divers et variés utilisés dans d'autres pays.
Eux, souffrent vraiment en utilisant linux ;)

Laurent


--
Pensez
Avatar
Michelle Konzack
--5G50dybFf3pRZKd7
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Bon soir...

Am 2004-08-02 10:21:28, schrieb PII 233:
Bonjour,



peut-être, mais je ne suis toujours pas sur la console, mais avec un
terminal distant, donc, même situation, même punition :
$ consolechars --font=LatArCyrHeb-16
Couldnt get a file descriptor referring to the console
get_console_fd: Argument invalide



ssh mal configure !

La console utilise /dev/console ou /dev/ttyN, et moi je passe par un
/dev/pts . Enfin, c'est la conclusion à laquelle j'arrive, je ne sais
pas si elle est exacte :)

>Deja esseyer: /usr/bin/vt-is-UTF8

$ /usr/bin/vt-is-UTF8
Couldnt get a file descriptor referring to the console
is_in_UTF8_mode: Ioctl() inappropré pour un périphérique



C'est ssh !

Greetings
Michelle

--
Linux-User #280138 with the Linux Counter, http://counter.li.org/
Michelle Konzack Apt. 917 ICQ #328449886
50, rue de Soultz MSM LinuxMichi
0033/3/88452356 67100 Strasbourg/France IRC #Debian (irc.icq.com)

--5G50dybFf3pRZKd7
Content-Type: application/pgp-signature; name="signature.pgp"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBD958C0FPBMSS+BIRAk+QAKCcrMcJP7Z5/8pQLx6gbU/x6rTccgCgyalp
FvkTFggBs0IH2yPapN6BoGk =4v/B
-----END PGP SIGNATURE-----

--5G50dybFf3pRZKd7--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
PII 233
Michelle Konzack wrote:

Bon soir...


Goten tag
(ça devrait ressembler phonétiquement)

ssh mal configure !


mais encore ?

J'ai bien un SSH_TTY :
SSH_TTY=/dev/pts/4

En regardant le man, je vois une option -t liée au tty.
J'essaye donc un ssh -t, mais j'ai le même comportement.
Pour être sûr, j'essaye un ssh -T, et la, je n'ai plus de terminal (r ien
n'apparait sur putty après que j'ai entré mon mot de passe).

Par ailleurs :
«If a 8-bit clean channel is required, one must not request a pty or
should specify no-pty.»
Mais je pense que ça concerne le transfert de données, afin que ces
données ne soient pas interprétées (quand on fait un ssh -c par exe mple).

Je ne comprends donc pas ce que tu pointes comme erreur de
configuration. Pourrais-tu préciser ?
--
pii233
Avatar
Vincent Lefevre
On 2004-08-04 10:50:10 +0200, PII 233 wrote:
En regardant le man, je vois une option -t liée au tty. J'essaye
donc un ssh -t, mais j'ai le même comportement. Pour être sûr,
j'essaye un ssh -T, et la, je n'ai plus de terminal (rien n'apparait
sur putty après que j'ai entré mon mot de passe).



L'option -t est utile si tu veux travailler dans un terminal, et
non pas juste lancer une commande à distance, sans interaction.
Elle est implicite si tu ne donnes pas de commande. Par exemple,
j'utilise la fonction suivante pour me connecter sur une machine
nommée albus et utiliser zsh comme shell:

albus()
{
if [[ $domain == loria ]] then
ssh -t albus zsh -l
else
ssh -t loria 'zsh -ilc "ssh -t albus zsh -l"'
fi
}

Si tu veux juste utiliser une passerelle:

ssh -t <passerelle> ssh <machine_cible>

Par ailleurs :
«If a 8-bit clean channel is required, one must not request a pty or
should specify no-pty.»
Mais je pense que ça concerne le transfert de données, afin que ces
données ne soient pas interprétées (quand on fait un ssh -c par exemple).



-c c'est une option de chiffrement complètement indépendante. Je
suppose plutôt que c'est pour transférer des fichiers par exemple
(ce que fait scp) ou plus généralement pour installer un tunnel ssh.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% validated (X)HTML - Acorn / RISC OS / ARM, free software, YP17,
Championnat International des Jeux Mathématiques et Logiques, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Loic Minier
Vincent Lefevre - Thu, Aug 05, 2004:

> Mais je pense que ça concerne le transfert de données, afin que ces
> données ne soient pas interprétées (quand on fait un ssh -c par exemple).
-c c'est une option de chiffrement complètement indépendante. Je
suppose plutôt que c'est pour transférer des fichiers par exemple
(ce que fait scp) ou plus généralement pour installer un tunnel ssh.



SSH est un protocole asymétrique qui permte l'échange d'une clé
symétrique entre deux machines. -c sert à choisir le protocole
symétrique à utiliser pour les données (après la connexion et l'échange
d'une clé).

--
Loïc Minier


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2