1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut Caractères accentués avec PHP 5.6 chez OVH

    Bonjour,

    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
    echo '
    <!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">
    <head>
    <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>' . "\n";
     
    echo '<p>' . "echo '&eacute; &egrave; &ccedil; &agrave;'; donne :" . '</p>' . "\n";
     
    echo '<p>é è ç à</p>'. "\n";
     
    echo '<p>' . "echo htmlEntities ('&eacute; &egrave; &ccedil; &agrave;', ENT_QUOTES, 'ISO-8859-1'); donne :" . '<p>' . "\n";
     
    echo '<p>' . htmlEntities ('é è ç à', ENT_QUOTES, 'ISO-8859-1') . '</p>' . "\n";
     
    echo '<p>' . htmlEntities ('Ce ne peut pas être la fonction echo qui est en cause. La version 5.6 de PHP sur ce serveur ne gère pas les caractères accentués.', ENT_QUOTES, 'ISO-8859-1') . '</p>' . "\n";
     
    echo '</body>
    </html>';
    Voir le résultat en lligne :


    Je dis à OVH que leur version 5.6 ne gère pas les caractères accentués.

    Ils me disent que j'ai un problème de code (sans préciser), que c'est de ma faute.

    Savez-vous où est l'erreur ou une fois de plus le support OVH dit n'importe-quoi.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de Dendrite
    Femme Profil pro
    Développeur informatique
    Inscrit en
    juin 2008
    Messages
    955
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : juin 2008
    Messages : 955
    Points : 1 349
    Points
    1 349

    Par défaut

    Quand tu édites test.php, le fichier source avec ton script, avec notepad++, il t'affiche quel encodage ? il y a des chances que ça soit 'utf8' et que tu doives alors cliquer "Convertir en ANSI" (attention, pas encoder mais bien convertir, c'est pas du tout pareil et c'est bien trompeur). Alors tu enregistres ton fichier et tu retapes tes accents, pour qu'il soit d'emblée dans le même encodage que celui que tu annonces.
    It's easier to be friends with lots of people online than one person in person!

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 635
    Points : 42 557
    Points
    42 557

    Par défaut

    PHP ne s'occupe pas des caractères accentués, il distribue ce qu'on lui donne.
    Dans ton cas, ton fichier est visiblement encodé en UTF8 alors que tu forces un contenu en ISO.
    Change l'encodage de ton fichier .php dans ton editeur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Responsable Livres

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 480
    Points : 10 184
    Points
    10 184

    Par défaut

    N'est pas plus simple de changer la charset et qu'il reste en UTF8, qui est le standard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="content-Type" content="text/html; charset=UTF-8" />

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Merci beaucoup de vos réponses.

    Je crois savoir qu'il n'y a pas d'alphabet par défaut en PHP 5.5
    Par contre en PHP 5.6 c'est UTF-8 par défaut.

    Je vais mettre le charset à UTF-8 et je vous tiens au courant.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    J'ai changé la balise meta et cela ne marche pas mieux :

    Voir le résultat en lligne :

    Je précise que le problème n'existe qu'en version 5.6

    En 5.5, tout marche très bien à condition simplement d'indiquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
    Quand tu édites test.php, le fichier source avec ton script, avec notepad++, il t'affiche quel encodage ?
    Tu veux dire le fichier source html, je fais un copier-coller depuis le navigateur ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 635
    Points : 42 557
    Points
    42 557

    Par défaut

    Non le fichier .php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Citation Envoyé par sabotage Voir le message
    Non le fichier .php
    Excuse-moi mais j'utilse l'éditeur de code d'une vieille version de Dreamwaever.

    Je ne vois comment dans Dreamwaever je peut connaître l'alphabet utilisé.

    Et je ne trouve pas Notepad sur mon poste de travail.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Ok, j'ai chargé Notepad.

    J'ai converti le fichier en UTF-8

    Maintenant les caractères accentués passent mais c'est avec htmlentities que j'ai un problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo htmlEntities ('é è ç à', ENT_QUOTES, 'ISO-8859-1'); donne :
     
    é è ç Ã
    Je pense qu'il faudrait enlever la référence à l'alphabet ISO pour que cela marche.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 635
    Points : 42 557
    Points
    42 557

    Par défaut

    Pourquoi tu utilises htmlentities ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Citation Envoyé par sabotage Voir le message
    Pourquoi tu utilises htmlentities ?
    J'ai besoin de htmlentities dans plusieurs programmes, ainsi d'ailleurs que html_enttity-decode.

    Une fois converti le fchier en UTF-8, ce code fonctionne en 5.6.

    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
    echo '
    <!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">
    <head>
    <meta http-equiv="content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>' . "\n";
     
    echo '<p>' . "echo '&eacute; &egrave; &ccedil; &agrave;'; donne :" . '</p>' . "\n";
     
    echo '<p>é è ç à</p>'. "\n";
     
    echo '<p>' . "echo htmlEntities ('&eacute; &egrave; &ccedil; &agrave;'); donne :" . '<p>' . "\n";
     
    echo '<p>' . htmlEntities ('é è ç à', ENT_QUOTES) . '</p>' . "\n";
     
    echo '<p>' . htmlEntities ('Ce ne peut pas être la fonction echo qui est en cause. La version 5.6 de PHP sur ce serveur ne gère pas les caractères accentués.', ENT_QUOTES) . '</p>' . "\n";
     
    echo '</body>
    </html>';
    Voir le résultat en ligne

    Je pense même que la baise <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> est inutile car UTF-8 est le charset par défaut de PHP 5.6.

    A noter que le programme ci-dessus ne fonctionne pas en 5.5 car la référence à un charset est obligatoire pour htmlentities ().

    Si je comprends, pour passer en 5.6 il faudrait convertir tous mes scripts en UTF-8 avec Notepad++

    C'est faisable mais gros boulot car il y a un paquet de scripts, sans oublier quelques classes PEAR sur lesquelles je n'ai pas de contrôle.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 635
    Points : 42 557
    Points
    42 557

    Par défaut

    PHP 5.5 et 5.6 fonctionnent tous les deux en UTF8 ou en ISO.
    Si tu as des problèmes d'accents, c'est qu'un de tes éléments n'utilise pas le même encodage que les autres.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Merci de ton suivi.

    Citation Envoyé par boteha Voir le message
    A noter que le programme ci-dessus ne fonctionne pas en 5.5 car la référence à un charset est obligatoire pour htmlentities ().
    J'ai éccrit cela et cela semble faut car le script marche aussi en 5.5.

    L'action dféterminante a été de convertir le fichier PHP en UTF-8, il était en ANSI.
    Une fois le fichier converti, si je j'ouvre, modifie et réenregistre avec mon vieux Dreamwaever cela reste en UTF-8.

    Citation Envoyé par boteha Voir le message
    Si je comprends, pour passer en 5.6 il faudrait convertir tous mes scripts en UTF-8 avec Notepad++
    Pas d'autre moyen ? Les prendre un par un sera assez galère.

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 635
    Points : 42 557
    Points
    42 557

    Par défaut

    Je t'ai déjà repondu : si tu veux rester en ISO, tu peux.
    Si tu veux passer à UTF8, tu peux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Encore merci de ton suivi mais je ne comprends p)as :

    Citation Envoyé par sabotage Voir le message
    Je t'ai déjà repondu : si tu veux rester en ISO, tu peux.
    Si tu veux passer à UTF8, tu peux.
    Avec le codage ANSI du fichier PHP, le charset ISO ne fonctionne pas avec PHP 5.6, c'était le point de départ de la discussion.

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    28 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 635
    Points : 42 557
    Points
    42 557

    Par défaut

    Soit tu peux modifier la configuration du serveur,
    Soit tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=ISO-8859-1');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Pourquoi header et pas une balise meta ?

    Et où dois-je placer header,, pas dans le <head> ?

    Encore merci.

  18. #18
    Responsable Livres

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 480
    Points : 10 184
    Points
    10 184

    Par défaut

    Citation Envoyé par boteha Voir le message
    Bonjour,

    J'ai changé la balise meta et cela ne marche pas mieux :

    Voir le résultat en lligne :
    Pour ma part le lien que tu donnes fonctionne très bien, j'ai bien tout les accent affiché.

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Citation Envoyé par MaitrePylos Voir le message
    Pour ma part le lien que tu donnes fonctionne très bien, j'ai bien tout les accent affiché.
    Effectivement il fonctionne bien mais après conversion du fichier PHP de ANSI à UTF-8.

    Si j'avais une solution qui ne m'oblige pas à convertir tous les fichiers PHP en UTF-8 ce serait sympa.

    Cela dit si la performance est meilleure en UTF-8 c'est un boulot que je peux faire.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    mai 2004
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2004
    Messages : 444
    Points : 88
    Points
    88

    Par défaut

    Bonjour,

    Si je veux passetr en UTH-8, je dois ouvrir chaque script, le convertir avec Notepad et le ré-enregistrer.

    Pas d'autre moyen ?

    Pas moyen de faire cela au niveau d'un dossier pour tous les scripts à l'intérieur ?

Discussions similaires

  1. [Configuration] Caractères accentués avec SVN
    Par gcolmetdaage dans le forum Outils
    Réponses: 5
    Dernier message: 11/09/2007, 11h04
  2. Caractères accentués avec <html:link>
    Par papysam dans le forum Struts
    Réponses: 5
    Dernier message: 25/05/2007, 16h18
  3. Les caractères accentués PG+PHP
    Par imer5 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/07/2006, 10h17
  4. Problème de caractères accentués avec CAM::DBF
    Par ustilago dans le forum Modules
    Réponses: 4
    Dernier message: 23/06/2006, 09h46
  5. caractères accentués avec Tsearch2
    Par nilytel dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/05/2005, 12h34

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