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 :

encodage [Encodage]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 43
    Points : 42
    Points
    42
    Par défaut encodage
    Bonjour.
    J'ai un problème d'encodage :

    Toutes mes pages sont bien encodée en utf8 (fait en refait avec notepad et avec phpStorm pour être sur)
    De plus, la balise <meta charset="utf8"> est bien présente (j'ai vérifié avec l'inspecteur d'élément du navigateur).

    Lorsque je met les fichier sur mon serveur, que je vais sur le site ... mes caractère "é" se transforme en "é" et autre chose pour les autres accents...
    Avant de mettre les fichiers sur le serveur, j'ai écrit mes caractère normalement dans mes pages PHP , c'est à dire "é" par exemple.
    Et lorsque je le met sur le serveur, et que je retélécharge les fichiers ... Mes caractère "é" ont été transformé en "é".

    J'ai bien évidemment cherché sur des tas de forum, sans trouver la solution.

    Merci d'avance à vous

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as peut-être un problème avec le transfert de fichiers. Quel outil utilises-tu pour faire le transfert de fichiers ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 43
    Points : 42
    Points
    42
    Par défaut Re [encodage]
    Bonjour,

    Merci de votre réponse, j'utilise FileZilla

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Et en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=utf-8');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 43
    Points : 42
    Points
    42
    Par défaut RE
    Bonjour,

    Je ne peux pas car j'ajoute un module à un site. En gros, les pages que je crée sont incluses avec "include". Donc le menu est déjà présent avant l'inclusion, alors je ne peux pas ajouter dans mes pages "header()" comme il y a déjà eu un affichage ...

  6. #6
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est dans la page qui inclus qu'il faut mettre le header.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Si tu vois des séquences multi-octets (é, etc.) c’est que l’encodage interne du fichier est bien UTF-8. Il est mal interprété par le navigateur. Vérifie dans le menu affichage > encodage du navigateur quel est l’encodage que celui-ci suppose, ça te donnera un indice. Tu peux également vérifier les en-têtes reçus dans les informations sur la page ou dans l’onglet réseau de la console F12.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 43
    Points : 42
    Points
    42
    Par défaut RE
    Bonjour. Merci pour vos réponses. Je suis allé voir dans l'onglet réseau, et dans la partie "En-tête de la réponse", j'ai : "Content-Type*:"text/html; charset=ISO-8859-1" ... Donc si je convertit toutes mes pages en ISO-8859-1 ainsi que ma base de donnée, le problème sera t-il réglé ?

    Je rajoute qu'en local, lorsque je vais voir dans l'onglet réseau, c'est bien en utf8.

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je te déconseille vivement de modifier l’encodage de ta base de données si celle-ci est déjà en UTF-8. Pour connaître son encodage, rends-toi sur ton PHPMyAdmin (ou autre outil équivalent), sélectionne ta base de données, puis fais exécuter cette requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW VARIABLES LIKE 'character_set%';
    Dans mon cas j’obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    +--------------------------+-----------------------------------------------+
    | Variable_name            | Value                                         |
    +--------------------------+-----------------------------------------------+
    | character_set_client     | utf8mb4                                       |
    | character_set_connection | utf8mb4                                       |
    | character_set_database   | utf8                                          |
    | character_set_filesystem | binary                                        |
    | character_set_results    | utf8mb4                                       |
    | character_set_server     | latin1                                        |
    | character_set_system     | utf8                                          |
    | character_sets_dir       | c:\wamp\bin\mysql\mysql5.6.17\share\charsets\ |
    +--------------------------+-----------------------------------------------+
    Rapidement, utf8mb4 est une amélioration récente de la prise en charge d’UTF-8 par MySQL, qui élimine certains problèmes avec les caractères encodés sur plus de deux octets. À ce détail près c’est un charset équivalent à utf8.

    Les variables qui nous intéressent ici sont character_set_database qui est l’encodage de ta base, et character_set_connection qui représente le charset employé par tes scripts PHP quand tu ouvres une connexion, par exemple avec l’instruction :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo = new PDO('mysql:host=localhost;dbname=machin;charset=utf8', … );

    (ou quand tu utilises une requête SET NAMES 'utf8').

    Tu peux aussi faire exécuter la requête SHOW VARIABLES depuis un script PHP pour vérifier la façon dont le moteur PHP se connecte à ta base de données.

    Ces deux variables, character_set_database et character_set_connection, doivent correspondre pour éviter les caractères corrompus.

    Si tu te rends compte que tu dois changer l’encodage de ta base, réfère-toi aux instructions de l’indispensable tuto passer à l’UTF-8 sans manquer une étape.




    À propos de ton problème de header : comme aujourd’hui, les serveurs sont capables de contourner la limitation du « contenu déjà envoyé » en utilisant un système de tampon de manière transparente, tu devrais essayer de faire malgré tout un appel à header depuis tes propres fichiers. Avec un peu de chance ça devrait écraser la déclaration précédente.

    Si tu es en mesure de contacter l’administrateur du site, parle-lui de ce problème d’encodage, car c’est un problème important.


    Un mot à propos de FileZilla : vérifie qu’il ne fait pas les transferts en mode ASCII. Ce mode est une fonctionnalité historique de FTP, elle altère les fichiers, il ne faut plus l’utiliser. Assure-toi que tous les transferts se font en mode binaire.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 43
    Points : 42
    Points
    42
    Par défaut RE
    Réponse très complète, merci.

    Au niveau de ma base de donnée, j'ai effectué les deux tests (depuis un script php ainsi que phpMyAdmin), tout est bon.

    J'ai donc essayé de mettre le header dans une de mes propre page php : sans succès, visiblement, le serveur utilisé n'est pas capable de contourner la limitation.

    J'ai pu avoir accès à l'index général du site web, j'ai donc rajouté le header dans cette page, pour tester (je ne suis pas censé toucher à ce fichier). Et donc là ... dans l'onglet réseau du navigateur, j'ai la bonne valeur.

    Cependant, le site web contenait déjà des accents. Et les accents déjà contenus dans le site web se sont transformés en "�". J'ai alors enlevé le header. Je pense contacter l'administrateur du site car il m'a pourtant certifié que celui ci était encodé totalement en utf8.

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

Discussions similaires

  1. Erreur Objet requis : 'this' --> Comprend pas!!
    Par Grozeil dans le forum ASP
    Réponses: 3
    Dernier message: 30/03/2005, 09h46
  2. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01
  3. sql ne comprend pas mon where!et me demande des parametres
    Par marie10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2004, 11h08
  4. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 21h46

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