Bonjour.
J'utilise bugzilla qui est écrit en perl et je viens de remarquer un soucis avec les pièces jointes.
Si celles-ci ont des accents on peut les télécharger sans problème avec firefox mais avec internet explorer (le 8, oui je sais mais j'ai pas le choix....) ça ne fonctionne pas. IE ignore le codage utf-8 et sort un nom de fichier non décodé (de ce que je comprends)
Par exemple un fichier dont le nom est "test é ç.txt" devient "=_UTF-8_Q_test1=20=C3=A9=20=C3=A7=2Etxt_="
Le contenu du fichier est bon, ce n'est que le nom qui est affecté.
Je pense avoir repéré le code fautif dans un script cgi
Le soucis est connu depuis plusieurs années chez bugzilla mais bon la faute est rejeté sur IE (ce qui n'est pas forcément faux, n’empêche que le problème existe avec le couple bugzilla/IE) et donc la correction n'est pas à l'ordre du jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 # Don't send a charset header with attachments--they might not be UTF-8. # However, we do allow people to explicitly specify a charset if they # want. if ($contenttype !~ /\bcharset=/i) { # In order to prevent Apache from adding a charset, we have to send a # charset that's a single space. $cgi->charset(' '); if (Bugzilla->feature('detect_charset') && $contenttype =~ /^text\//) { my $encoding = detect_encoding($attachment->data); if ($encoding) { $cgi->charset(find_encoding($encoding)->mime_name); } } } print $cgi->header(-type=>"$contenttype; name=\"$filename\"", -content_disposition=> "$disposition; filename=\"$filename\"", -content_length => $attachment->datasize); disable_utf8(); print $attachment->data;
Après avoir un peu cherché je pense avoir compris que IE n'utilise pas le même codage UTF-8 que firefox et que c'est pour ça que cela ne fonctionne pas.
Le soucis c'est que mon niveau de perl est proche de zéro...
J'aimerais donc savoir s'il est possible au niveau de perl de détecter le navigateur (IE ou firefox) et suivant ce navigateur de changer de comportement de décodage utf-8 et de quelle manière puis je décoder le fichier pour que cela fonctionne avec IE (sinon je vais dire aux utilisateurs de ne pas utiliser d'accent, cédille etc mais bon ça le fait un peu moyen )
L'autre solution pour moi serait de remplacer les caractères litigieux du nom de fichier avant le décodage utf-8 et si possible de ne le faire que pour IE.
Partager