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 :

PHP et UTF-8 [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut PHP et UTF-8
    Bonjour,
    je ne comprend pas.
    - J'ai la base en utf8_general_ci.
    - Avec mon éditeur de texte (notepad++) j'ai converti chaque page en utf-8(sans BOM).
    - Dans ma page index.php (qui est la seul de mon site étant donné que je passe les autres a l'aide d'une fonction :" include (verifPage($_GET['page'])) " )
    j'ai bien <meta charset="utf-8" /> dans le <head>
    - Dans le htaccess j'ai :
    SetEnv PHP_VER 5
    AddDefaultCharset UTF-8
    AddCharset UTF-8 .html

    Mais quand je stock mes variables dans la base de données que je met à jour via :
    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
    class clVar{
    	public $FR;
    	public $EN;
    	public $IT;
    }
     
    function MAJVariable2($nomVar, $Base){
    	$sortie = new clVar();
    	//MAJ des variables $ActuDroiteFR, $ActuDroiteEN, $ActuDroiteIT
    	$sql9 = "SELECT `Nom`,`FR`,`EN`,`IT` FROM `table` where Nom = '".$nomVar."'";
    	foreach  ($Base->query($sql9) as $row) {
    		$sortie->FR  = utf8_encode($row["FR"]);
    		$sortie->EN  = utf8_encode($row["EN"]);
    		$sortie->IT  = utf8_encode($row["IT"]);
    	}
     
    	//MAJ Variable $ActuDroite après clique sur bouton Modifier
    	if (isset($_POST["ModifVar"])){
    		if($nomVar != "default"){
    			$sql1 = "UPDATE table SET FR= '".utf8_decode($_POST["resultFR"])."',EN= '".utf8_decode($_POST["resultEN"])."', IT= '".utf8_decode($_POST["resultIT"])."' WHERE Nom= '".$nomVar."'";
    			$req1=$Base->exec($sql1);
    			header('Location: ./index.php?page=38');
    		}
    	}
    	return $sortie;
    }
    il stock parfaitement les à, é et è mais par contre les œ il n'y arrive pas. Et ne parlons pas des signes japonais.

    Qu'est-ce que j'ai oublié?

    PS : j'ai essayé de renseigner la variable directement via phpmyadmin, là ça stock bien mais quand j’écris via <?php echo $maVar; ?> il m'écrit même pas "éuvre" à la place de "œuvre", j'ai juste droit à : "uvre"

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Tu bosses en UTF-8 mais tu rajoutes des utf8_encode/decode inutiles. Normal que ça foire. Supprime les.

    Regardes dans la doc ce que font ces fonctions.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci de ta réponse mais si je les ai ajouté c'est parce que j'en ai impérativement besoin, sans quoi, mon texte n'a même plus les à, é, è

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Pour plus de détails voici le code :
    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
    <?php
    $langue = ($HTTP_COOKIE_VARS[ "Lang"]);
    if ((isset($_POST["ValSelVar"])) || (isset($_POST["ModifVar"]))){
    	if(isset($_POST["ValSelVar"])) $_SESSION['VariableCourante']=$_POST["SelVar"];
    	$result=MAJVariable2($_SESSION['VariableCourante'],$dbh);
    	$resultFR=$result->FR;
    	$resultEN=$result->EN;
    	$resultIT=$result->IT;
    }
    ?>
    <div id="Corps">
    <table id="tableGestionSite" BORDER=2>
    	<th align="center" colspan="5">
    		Modifier n'importe quelle variables
    	</th>
    	<tr align="center">
    		<form action="./index.php?page=38" method="post" enctype="multipart/form-data">
    			<td  colspan="5">
    				<select id="idSelVar" name="SelVar">
    					<option value="default">....Choisissez une variable....</option>
    <?php
    $sql0 = "SELECT `Nom`,".$langue." FROM table order by Nom";
    foreach  ($dbh->query($sql0) as $row) {
    	echo "<option value='".$row['Nom']."' ";
    	if(isset($_POST['SelVar'])){
    		if($_POST['SelVar']==$row['Nom'])
    			echo "selected";
    	}
    	echo ">".$row['Nom']."</option>";
    }
    ?>
    				</select> 
    				<input type="submit" name="ValSelVar" value="Sélectionner" />
    			</td>
    		</form>
    	</tr>
    	<tr>
    		<form action="./index.php?page=38" method="post" enctype="multipart/form-data">
    			<td>
    				FR<br/>
    				EN<br/>
    				IT<br/>
    			</td>
    			<td  colspan="3">
    				<input size="45" type="text" name="resultFR" value="<?php echo $resultFR; ?>" />
    				<input size="45" type="text" name="resultEN" value="<?php echo $resultEN; ?>" />
    				<input size="45" type="text" name="resultIT" value="<?php echo $resultIT; ?>" />
    			</td>
    			<td align="center">
    				<input type="submit" name="ModifVar" value="Modifier" />
    			</td>
    		</form>
    	</tr>
    </table>
    </div>

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Personne n'a jamais eu aucun problème après avoir lu et appliqué à la lettre ce tutoriel.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Personne n'a jamais eu aucun problème après avoir lu et appliquer à la lettre ce tutoriel.
    ................
    En lisant ce tuto, je me suis aperçu que j'avais un truc qui manquais ......
    Lors de la connexion, même si je suis en PDO il paraît c'est mieux de préciser :
    $dbh->exec("set names utf8");

    ... Merci a toi ...........

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Si tu utilises une version pas trop vieille de php (>= 5.3.6), tu peux le spécifier directement dans la chaîne de connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "mysql:host=$host;dbname=$db;charset=utf8"
    Sinon, tu peux la spécifier en tant que commande initiale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $connect = new PDO(
      "mysql:host=$host;dbname=$db", 
      $user, 
      $pass, 
      array(
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
      )
    );

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

Discussions similaires

  1. [PHP 5.2] PHP et UTF-8
    Par Eric80 dans le forum Langage
    Réponses: 2
    Dernier message: 01/07/2009, 16h55
  2. Flux RSS avec PHP : encodage UTF-8 vers ISO-8559-1
    Par eric437 dans le forum Langage
    Réponses: 1
    Dernier message: 03/08/2008, 20h56
  3. [MySQL] Pb formulaire PHP et UTF-8
    Par fguigui dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/05/2006, 19h22
  4. [PHP] <?xml version="1.0" encoding="UTF-16
    Par pierrot10 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 06/03/2006, 11h22
  5. [XML] Php -> XML / Utf-8
    Par gehan dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/02/2006, 10h30

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