Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/05/2011, 14h34   #1
Invité régulier
 
Inscription : janvier 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 47
Points : 7
Points : 7
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 :
1
2
$kw = 'toto';
$this->context->getResponse()->addMeta('keywords', " $kw  . , ".sfConfig::get('app_general_keywords'));
ça marche nickel
Code :
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 :
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 :
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
pierreHaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 16h15   #2
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
Moi perso j'ai surtout tilté sur
Code :
$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 :
$kw = mb_convert_encoding ( $kw ,  'ASCII'   ,$sEncodage );
Code :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Pourquoi convertir ta chaine en ASCII et pas en utf-8 ?
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h11   #3
Invité régulier
 
Inscription : janvier 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 47
Points : 7
Points : 7
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 :
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 :
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
pierreHaut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h29   #4
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
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
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h44   #5
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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.
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 13h50   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h11.


 
 
 
 
Partenaires

Hébergement Web