Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
Re: [sympa-fr] Documents partagés et UTF-8
- From: Benoit Branciard <adresse@cachée>
- To: adresse@cachée
- Subject: Re: [sympa-fr] Documents partagés et UTF-8
- Date: Wed, 03 Feb 2010 19:20:52 +0100
Benoit Branciard a écrit :
Il semblerait bien que notre installation migrée de Sympa 5.1 vers 6.0.1 soit victime de ce bug. Y-a-t-il eu des avancées à ce sujet depuis ce post du 03/04/2009 ?
NB: il n'y avait pas de problèmes en 5.1 (qui fonctionnait en ISO).
Bon à défaut de réponse enthousiaste, voici ma contribution! J'ai à première vue résolu ce problème en modifiant la séquence d'encodage dans tools.pm:
--- tools.pm.0 2010-02-03 19:02:41.000000000 +0100
+++ tools.pm 2010-02-03 19:14:41.000000000 +0100
@@ -1343,7 +1343,7 @@
## We use low-level subroutine instead of to prevent Encode::encode('MIME-Q')
## Otherwise \n are inserted
- my $encoded_part = &Encode::encode_utf8(&Encode::MIME::Header::_encode_q($part));
+ my $encoded_part = &Encode::MIME::Header::_encode_q(&Encode::decode_utf8($part));
$filename = $leading.$encoded_part.$trailing;
}
De cette manière on respecte la symétrie qencode/qdecode; et à première vue faire un encode_utf8 sur la chaîne Q-encodée n'a aucun intérêt vu qu'il s'agit d'ASCII pur, tandis qu'un decode_utf8 *avant* de Q-encoder parait plus pertinent...
David Verdin a écrit :
Re-bonjour,
Je suis convaincu que rien de tout ceci n'a été modifié entre la 5.4.5 et la 5.4.7. Par ailleurs, il semble bien que le problème se produise lors du transfert du client vers le serveur.
Nous serait-il possible de tester votre interface web ? On pourrait jeter un coup d'œil aux entêtes.
Cordialement,
David Verdin
Nicolas Courtel a écrit :
Bonjour,
C'est exactement la réflexion que je me suis fait lorsqu'un utilisateur m'a signalé le problème :-)
Argh, problème d'encodage...
Si je comprends bien l'encodage Q (en UTF-8) chaque caractère accentué est encodé sur deux paires de caractères hexadécimaux chacun précédé d'un caractère "=". Par exemple, "é" doit donner "=C3=A9"
Si on regarde la chaîne stockée sur votre serveur, "=?UTF-8?Q?=C3=83=C2=A9t=C3=83=C2=A9?=", on voit qu'il y a deux fois plus de paires, qui signifient (d'après : http://hapax.qc.ca/conversion.fr.html) :
=C3=83 (Ã)
=C2=A9 (©)
Ce qui se traduit normalement par "été". Vous êtse sûr que ce n'est pas ce mot-là qui apparaît, plutôt que 'À©tÀ©' ?
Tout à fait, j'ai tapé ce caractère un peu vite (sur mon clavier Qwerty, '~' = 'Shift `').
Dès lors, il est fort probable que comme, lors d'une tentative d'accès à un fichier, la chaîne de caractères correspondant à son nom est Q-encodée pour le retrouver sur le système de fichiers, chacun des caractères de "été" soit à nouveau traduit en paires de caractères hexadécimaux. ce qui devrait donner deux doublons de part et d'autre du "t", et non 4 comme c'est le cas. Ce que vous trouvez correspond à :
=C3=83 (Ã)
=C2=83 ()
=C3=82 (Â)
=C2=A9 (©)
t
=C3=83 (Ã)
=C2=83 ()
=C3=82 (Â)
=C2=A9 (©)
L'encodage ne marche donc jamais. Dès que des données sont envoyées depuis le client vers le navigateur web, la traduction échoue.
Tout se passe comme si les caractères étaient envoyés en Latin 1 (en effet, "é" encodé en UTF-8 donne "é" quand il est affiché en latin 1).
Est-ce que les entête du document HTML indiquent bien un encodage UTF-8 ? Est-ce que vous avez essayé de saisir des caractères accentués ailleurs dans l'interface web ? Y a-t-il eu des problèmes ?
L'entête indique bien charset=utf-8, et je n'ai pas vu de problème d'accent ailleurs : par exemple la saisie du nom d'un abonné avec un accent se passe sans problème. La saisie d'un caractère accentué dans les documents partagés se passe bien également, la création du répertoire aussi (enfin, pour autant que je comprenne le Q-encoding, voir ci-dessous), c'est uniquement à la génération du lien et de l'URL sur l'interface que ça déraille.
Il semble donc y avoir une incompatibilité entre la locale de mon serveur, qui est pourtant bien fr_FR.UTF-8, et un bout de code de Sympa. Je vais regarder cela de plus près. Pourrait-il y avoir des différences pour ce problème entre la version 5.4.5 que j'utilise et la 5.4.7?
Ayant migré récemment de Sympa 5.2.4 vers 5.4.5 en Linux Debian, j'ai des soucis avec les caractères accentués dans les documents partagés. Les noms des fichiers et répertoires comportant des accents sont bien Q-encodés comme l'indique le manuel, mais c'est loin d'être transparent pour les utilisateurs :-) .
Lorsque l'on crée un répertoire, ou que l'on dépose un fichier, les caractères accentués apparaissent encodés; si par exemple je crée un répertoire 'été':
- l'apparence est correcte dans la fenêtre de saisie
- une fois créé, le répertoire apparaît sous la forme 'À©tÀ©' dans l'interface de Sympa, ainsi que dans le lien correspondant
- dans le système de fichier, son nom est par contre '=?UTF-8?Q?=C3=83=C2=A9t=C3=83=C2=A9?=', ce qui me semble correct
Et lorsque je clique sur le lien, l'interface m'indique que le répertoire n'existe pas; en effet, dans le log je constate que chaque caractère accentué a été recherché en double:
do_d_read : unable to read /.../shared/=?UTF-8?Q?=C3=83=C2=83=C3=82=C2=A9t=C3=83=C2=83=C3=82=C2=A9?= : no such file or directory
Le serveur et le client sont tous deux en fr_FR-UTF-8, ce qui semble convenir pour toutes les autres pages de Sympa.
Si quelqu'un a une explication, je suis preneur!
--
Benoit BRANCIARD
Pôle Infrastructures
Centre de ressources informatiques et du réseau (CRIR)
Université Paris 1 Panthéon-Sorbonne
http://crir.univ-paris1.fr
Tel. 01 44 07 89 68
--
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
-
Re: [sympa-fr] Documents partagés et UTF-8,
Benoit Branciard, 03/02/2010
- Re: [sympa-fr] Documents partagés et UTF-8, Benoit Branciard, 03/02/2010
Archives gérées par MHonArc 2.6.19+.