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

Symfony PHP Discussion :

encodage sur addMeta ('keywords")


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 55
    Par défaut encodage sur addMeta ('keywords")
    Bonjour,

    je cherche à générer des meta keywords à partir d'un champ de ma base.*

    Si je met une valeur en dur
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $kw = 'toto';
    $this->context->getResponse()->addMeta('keywords', " $kw  . , ".sfConfig::get('app_general_keywords'));
    ça marche nickel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="keywords" content=" TOTOTO   . , " />
    par contre si j'utilise une valeur issue de la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $kw = $un->getcustom_keyswords();
    $sEncodage = mb_detect_encoding($kw );
    $kw = mb_convert_encoding ( $kw ,  'ASCII'   ,$sEncodage ); 
    $this->context->getResponse()->addMeta('keywords', " $kw  . , ".sfConfig::get('app_general_keywords'));
    ça n'affiche rien
    ça génère ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="keywords" content="   . , " />
    je soupconne un problème d'encodage,
    j'ai essayé tous les conversion possible sans succés.

    Je maitrise pas bien les questions d'encodages de caractère. Mais je trouve ça vraiment mystérieux.

    Quelqu'un pourrait il m'aider à lever ce mystere ...?

    PierHaut

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Moi perso j'ai surtout tilté sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $kw = $un->getcustom_keyswords();
    spontanément comme ça je me suis dit que le "S" au milieu de keywords c'est bizarre, mais partons du principe que c'est la bonne orthographe de ta méthode.

    Mais passons !
    La deuxième chose qui m'a étonné est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $kw = mb_convert_encoding ( $kw ,  'ASCII'   ,$sEncodage );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    Pourquoi convertir ta chaine en ASCII et pas en utf-8 ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 55
    Par défaut Parce que a priori c'est justement déjà codé en utf8
    Passons sur mon orthographe déplorable mais qui retourne la bonne valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $kw = $un->getcustom_keyswords();
    $sEncodage = mb_detect_encoding($kw );
     echo  "PAS DECODE $kw $sEncodage  <br>"; 
     
    $kw = mb_convert_encoding ( $kw ,  'UTF-8'   ,$sEncodage ); 
    $sEncodage = mb_detect_encoding($kw );
     echo  "EN UTF8 $kw $sEncodage  <br>";
    affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PAS DECODE key word actu ASCII
    EN UTF8 key word actu ASCII
    manifestement c'est pas converti en utf8 non ?
    PB sur la fonction mb_convert_encoding, ou sur ma chaine ??

    Pi

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    La fonction http://www.php.net/manual/fr/functio...t-encoding.php prend un 2è paramètre qui est l'ordre de vérification des encodages. S'il n'est pas renseigné, l'ordre, c'est mb_detect_order()

    Par défaut, "ASCII" est avant "UTF-8".
    Comme ta chaîne de caractère ne possède pas de caractère spéciaux, il le prend en ASCII.

    Tu peux voir en changeant l'ordre ici : http://codepad.viper-7.com/w8pppN

    Par contre, si ta chaîne comprend un "caractère spécial", par exemple un accent, il sera, de base, détecté en UTF-8.

    http://codepad.viper-7.com/F1uwFD

    Si c'est pour encoder en UTF-8, pourquoi ne pas utiliser utf8_encode()
    http://fr2.php.net/manual/fr/function.utf8-encode.php

  5. #5
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Je suis d'accord avec Shikiryu et je m'apprêtais à te suggérer te tester justement avec des caractères spéciaux

    Par contre utf8_encode ne fonctionne que si la chaine de base est ISO-8859-1 si je ne m'abuse.

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Si je peux me permettre de monter un niveau plus haut dans la réflexion (sans remettre pour le moins du monde en cause la justesses de vos excellentes remarques).

    A quoi sert-il de vouloir créer une balise keywords alors qu'elle n'est plus prise en compte par les moteurs de recherches et vouée à disparaître ?

Discussions similaires

  1. [MySQL] encodage sur les caractères : quote, tirets
    Par tigunn dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/01/2014, 14h32
  2. [1.1][C#]Problème encodage sur body du mailto
    Par suedey dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/01/2007, 13h57
  3. Réponses: 4
    Dernier message: 28/09/2006, 20h20
  4. Problème d'encodage sur MySql 4.1
    Par Blanchet dans le forum Outils
    Réponses: 1
    Dernier message: 04/12/2005, 04h53

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