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

Langage PHP Discussion :

Zend Server et encodage UTF-8 avec readdir


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Zend Server et encodage UTF-8 avec readdir
    Bonjour,

    J'ai écumé le net à la recherche d'une réponse sans succès, je me tourne donc vers vous

    Voila mon problème:

    Je développe en local sur Zend Server et je suis synchroniser avec un serveur mutualisé 1and1.
    le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $dir_home = opendir($path); 
    while ($f = readdir($dir_home)) {
    	if($f != '..' && $f != '.') {
    		$images [] = $f;
    		echo mb_detect_encoding($f).' '.(mb_check_encoding($f,'UTF-8')).' '.$f.'<br>';
    	}
    }
    me retourne en local
    UTF-8 0 D�liresNocturnes.jpg
    ASCII 1 GeometrikaOne.jpg
    UTF-8 0 M�kanoColor.jpg
    ASCII 1 PaysageOnirique.jpg
    ASCII 1 SommeilParadoxal.jpg

    et online:
    ASCII 1 SommeilParadoxal.jpg
    UTF-8 1 DéliresNocturnes.jpg
    ASCII 1 PaysageOnirique.jpg
    UTF-8 1 MékanoColor.jpg
    ASCII 1 GeometrikaOne.jpg

    Houston on a un problème... mb_check_encoding($f,'UTF-8') retourne 0 alors que mb_detect_encoding me retourne UTF-8 ??

    Je pense donc a un problème de config du Zend_Server, j'ai ajouté AddDefaultCharset UTF-8 a mon .htaccess sans succès...

    Une idée?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ton fichier est bien encoder en utf-8 et ton serveur renvoie bien de l'utf-8 ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Oui mon script est bien encodé en utf-8.

    Les autres chaine de caractères du site qu'elles viennent de mysql, xml, d'un fichier php ou html s'affichent normalement.
    Le seul problème viens de la chaine retourné par readdir qui m'affiche "D�liresNocturnes.jpg" en local et "DéliresNocturnes.jpg" en ligne

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    met le serveur renvoie bien aussi de l'utf-8 ? c'est indépendant de l'encodage du fichier, tu dois sans doute être sous windows ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Oui je suis sur windows en local, linux online. Comment savoir si il revoit de l'UTF-8 ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par yemal48 Voir le message
    Oui je suis sur windows en local, linux online. Comment savoir si il revoit de l'UTF-8 ?
    par exemple avec firefox, tu cliques droit dans la page et tu va sur : infomations sur la page, c'est marquer Encodage

  7. #7
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    force l'encodage du navigateur en UTF-8 dans les 2 cas pour voir si tu as une différence

    et si tu rajoutes "utf8_encode($f)" pour l'affichage de test, tu obtiens quoi ?
    GNAP !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    UTF-8 0 DéliresNocturnes.jpg en local

    UTF-8 1 DéliresNocturnes.jpg en ligne

    En fait c'est le serpent qui se mort la queue vu que je n'arrive pas à détecter de manière fiable l'encodage de la chaine.
    Il me serai bien sur facile de corriger le problème pour les 2 environnements mais j'aimerai autant garder ma synchro...

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    en meme temps pas sur que sous windows le système de fichier soit en utf-8, t'as essayes avec FilesystemIterator ?

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $files = new FilesystemIterator ($path);
    foreach ($files as $fileinfo) {
    echo mb_detect_encoding($fileinfo->getFilename()).' '.(mb_check_encoding($fileinfo->getFilename(),'UTF-8')).' '.$fileinfo->getFilename().'<br>';
    }
    Renvoi la même erreur, enfin la même chaine.

    edit: En passant je ne connaissais pas cette classe merci

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par yemal48 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $files = new FilesystemIterator ($path);
    foreach ($files as $fileinfo) {
    echo mb_detect_encoding($fileinfo->getFilename()).' '.(mb_check_encoding($fileinfo->getFilename(),'UTF-8')).' '.$fileinfo->getFilename().'<br>';
    }
    Renvoi la même erreur, enfin la même chaine.

    edit: En passant je ne connaissais pas cette classe merci
    j'ai pas mon Windows sous ma main pour vérifier mais en attendant tu peux faire une condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
    {
        $filename = utf8_encode($filename);
    }

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette solution je testerai

    Je viens de tomber sur la fonction mb_convert_encoding qui contrairement à utf8_encode marche dans les 2 cas et uniformise l'encodage dans les 2 env:

    $f = mb_convert_encoding($f, 'UTF-8', 'UTF-8');


    Merci à tous je marque comme résolu.

  13. #13
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    force l'encodage du navigateur en UTF-8 dans les 2 cas pour voir si tu as une différence
    GNAP !

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Pardon je me suis emballé ^^

    En fait ça ne marche toujours pas ça a juste fait disparaitre les caractères spé

    DéliresNocturnes.jpg -> DliresNocturnes.jpg

    je seiche...

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fais la condition

Discussions similaires

  1. [ZF 1.10] Problème d'encodage UTF-8 avec Zend_Db Mysqli
    Par arnolem dans le forum Zend_Db
    Réponses: 1
    Dernier message: 21/04/2010, 00h12
  2. [MySQL] Encodage UTF-8 avec phpMyAdmin
    Par matpush dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 30/12/2009, 09h30
  3. [mail] Encodage UTF-8 avec mail()
    Par anxious dans le forum Langage
    Réponses: 9
    Dernier message: 02/12/2009, 22h56
  4. Encodage UTF-8 avec Notepad++
    Par Palca dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 28/02/2009, 04h30
  5. PB encodage UTF-8 avec Japonais, Chinois
    Par ch33k0n dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 18/06/2007, 12h02

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