IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Problème d'uTF8 avec un fichier joint et internet explorer


Sujet :

Web Perl

  1. #1
    Membre du Club
    Inscrit en
    février 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 79
    Points : 54
    Points
    54
    Par défaut Problème d'uTF8 avec un fichier joint et internet explorer
    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

    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;
    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.
    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.

  2. #2
    Membre du Club
    Inscrit en
    février 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 79
    Points : 54
    Points
    54
    Par défaut
    En attendant de faire mieux j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       $filename =~ s/^.*[\/\\]//;
        # escape quotes and backslashes in the filename, per RFCs 2045/822
        $filename =~ s/\\/\\\\/g; # escape backslashes
        $filename =~ s/"/\\"/g; # escape quotes
    # suppression des caracteres posant problemes
    	use utf8; 
    	$filename =~ tr/ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ/AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy/;
    Mais bon c'est pas totalement satisfaisant...

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/04/2007, 09h11
  2. problème d'arborescence avec mes fichiers
    Par M4XiMUZ dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 12/04/2007, 17h52
  3. Problème de son avec un fichier swf
    Par dongnold dans le forum Flash
    Réponses: 5
    Dernier message: 31/12/2006, 07h08
  4. Réponses: 3
    Dernier message: 28/02/2006, 12h41
  5. [VBA]envoyer un email avec un fichier joint à partir d'excel
    Par mcay dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2005, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo