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

Bibliothèques et frameworks PHP Discussion :

[Smarty] [smarty v 2.6.22] Encodage UTF-8


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut [Smarty] [smarty v 2.6.22] Encodage UTF-8
    Bonsoir à tous,
    voici mon soucis :
    J'utilise simplexml pour l'ajout de données provenant d'un formulaire dans un fichier XML pour cela j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                                 $prod->addChild('description',utf8_encode(stripcslashes($_POST['description'])));
    Mon fichier XML est bien enregistré en UTF-8 et comporte bien l'entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       <?xml version="1.0" encoding="UTF-8"?>
    Dans mon fichier page.tpl j'ai placé la balise meta :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    et dès ke je lance l'affichage j'obtiens une page avec des caractères accentués tels que ceux-ci :
    é à ù respéctivement pour les caractères: é à ù

    Je ne comprend vraiment pas pourquoi étant donné tout ce ke je vous ai ennoncé avant.

    voici le code complet de mes pages :

    index.php5 :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php    
    include("upload.class.php5"); 
    require_once("Smarty/Smarty.class.php"); 
     
        $smarty = new Smarty();
     
        // Page d'accueil ou par défaut'
        switch($_GET['page']){
            case "admin":
                $smarty->assign('contenu','
                <h2>Gestion des produits</h2>
                <form action="" name="upload" method="post" enctype="multipart/form-data">
                   <fieldset>
                        <legend>Nouveau produit</legend>
                        <input type="hidden" name="file"  /><br />     
                        photos:  <input type="file" name="file"  /><br />
                        
                        <p>Nom Produit: <input type="texte" name="libelle" /></p>
                        <p>Description du produit: <br /><textarea cols="50"  rows="10"  name="description"></textarea></p>'."\n".'    
                        <p>Prix: <input type="text" name="prix" /></p>
                        
                        <p>Promotion: oui<input type="radio" id="promoOui" name="promo" value="oui">non<input type="radio" id="promoNon" name="promo" value="non" checked></p>
                        <p id="ancienPrix"></p>
        
                        <input type="submit" name="envoyer" value="envoyer" />                            
                   </fieldset>
                </form>');
     
                if(!empty($_FILES['file'])){
                    $handle = new Upload($_FILES['file']);
                    if ($handle->uploaded) {
                        $handle->Process('./photos');
                        $thumb = $handle->file_dst_pathname;
                        $handle->image_resize            = true;
                        $handle->image_ratio_y           = true;
                        $handle->image_x                 = 200;
                        $handle->Process('./photos');
                        if ($handle->processed)
                            $handle->clean();
     
                          $xml = simplexml_load_file('listingProd.xml');
                          $prod = $xml->addChild('produit');             
                          $prod->addChild('libelle',utf8_encode(stripcslashes($_POST['libelle'])));
                          $prod->addChild('path',$handle->file_dst_pathname);
                          $prod->addChild('path_thumb',$thumb);
                          $prod->addChild('prix',$_POST['prix']);
                          $prod->addChild('description',utf8_encode(stripcslashes($_POST['description'])));
                          $prod->addChild('promotion',$_POST['promo']);
                          $prod->addChild('dateFin',$_POST['dateFin']);
                          $prod->addChild('ancienPrix',$_POST['ancienPrix']);
                          $fic = $xml->asXML();
                          file_put_contents('listingProd.xml', $fic);    
                    }
                }
            break;
     
     // Assignation dans tous les cas
        $smarty->assign('menu','
            <li><a href="index.php5?page=accueil">Accueil</a></li>
            <li><a href="index.php5?page=recrutement">Offre d\'emploi</a></li>
            <li><a href="index.php5?page=produits">Nos produits</a></li>
        ');                                                 
     
        $smarty->display('page.tpl');
        $smarty->clear_all_assign(); 
    ?>
    page.tpl :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
            <meta http-equiv="Content-Language" content="fr" />    
            <title>{$title}</title> 
             <LINK rel="stylesheet" type="text/css" href="style.css"> 
            <SCRIPT LANGUAGE="JavaScript" SRC="jquery-1.3.2.js"></SCRIPT>
           {literal} 
                <SCRIPT language="Javascript">
                    var check=false;
                    function init(){
                        $("#promoOui").bind("click",function(){
                            $("#ancienPrix").append("Ancien prix <input type='text' name='ancienPrix'><br /> Date fin: <input type='text' name='dateFin'>"); 
                        });
                        $("#promoNon").bind("click",function(){
                            $("#ancienPrix").empty();
                        });              
                    }          
                </SCRIPT>
           {/literal}
        </head>
     
        <body onload="init();">
        <div id="conteneur">        
            <h1 id="header">
                <a href="index.php" title="Accueil"><span>Page</span></a></h1>
     
            <ul id="menu">
                {$menu}
            </ul>
     
            <div id="contenu">
                <h2>{$titre}</h2>
                <p>{$contenu}   </p>
                <div id="listProd">
                       {foreach from=$list item=produit}
                            <div id="produit">
                                {if $produit->promotion=='oui'}<img src="./images/promo.gif"/>{/if}
                                <div id="libProd">{$produit->libelle}</div>
                                <table>
                                    <tr>
                                        <td><a href="{$produit->path_thumb}"><img src="{$produit->path}"/></a></td>
                                        <td><p class='descProd'>{$produit->description}</p></td>
                                    </tr>
                                </table>
     
                                <div id="prixProd">
                                    {if $produit->promotion=='oui'}<span id="ancienPrix">{$produit->ancienPrix}</span>€ =>{/if}
                                    <span id="nouveauPrix">{$produit->prix}€</span>
                                </div>
                            </div>
                        {/foreach}    
                </div>                                                
            </div>
     
            <p id="footer">Copyright</p>
        </div>
        </body>
    </html>
    et un exemple du fichier listingProg.xml généré par le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <listing>
        <produit>
            <libelle>kirk hammet é</libelle>
            <path>./photos/Kirk_Hammett_Escape06_1280_5.jpg</path>
            <path_thumb>./photos/Kirk_Hammett_Escape06_1280_4.jpg</path_thumb>
            <prix>1</prix>
            <description>é à ù</description>
            <promotion>non</promotion>
            <dateFin/>
        </produit>
    </listing>
    Merci à tous ceux qui pourront m'aider

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Commence par vérifier que tes fichiers sont bien en UTF8 (avec ton editeur de texte ou notepad++).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut
    j'ai déja vérifié avec mon IDE phpEd tous les fichier sont en UTF-8

  4. #4
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut
    Problème résolu il ne fallait pas faire de utf8_encode mais directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $prod->addChild('libelle',stripcslashes($_POST['libelle']));
    $prod->addChild('description',stripcslashes($_POST['description']));
    Si quelqu'un sait pourquoi je veux bien savoir !

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ah je n'avais pas vu que tu avais un utf8_decode() ; pourquoi en aurait-il fallu un ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut
    heu non un utf8_encode() en fait je pensais que les données envoyé par le formulaire étaient en iso-8859-1 par défaut mais apparemment non.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Smarty] Utilisation de l'encodage UTF-8
    Par kreatik dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/11/2007, 23h14
  2. [Smarty] Utilisation de l'encodage UTF-8
    Par damien27000 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 10/11/2007, 10h15
  3. [C# 2.0] Comment réaliser un encodage UTF-8 ?
    Par StormimOn dans le forum C#
    Réponses: 2
    Dernier message: 18/10/2006, 10h35
  4. Pb Encodage UTF-8 pour Ooo
    Par Sylvain James dans le forum XMLRAD
    Réponses: 10
    Dernier message: 08/03/2006, 22h28
  5. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21

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