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 :

Migrer un site PHP / MySql ISO-8859-1 vers UTF-8


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    734
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 734
    Par défaut Migrer un site PHP / MySql ISO-8859-1 vers UTF-8
    Bonjour,

    Migrer un site PHP / MySql ISO-8859-1 vers UTF-8

    Il me semble qu'il y avait un tito à ce sujet, je n'arrive pas à le retrouver.

    De mémoire, sachant que le site en PHP 7.2 est par défaut codé en UTF-8

    1) Recoder tous les scripts d'ANSI vers YTF-8 sans DOM avec Notepad++.

    2) Indiquer UTF-8 à toutes les fonctions pour lesquelles il faut spécifier un jeu de caractères : html_entities () par exemple.

    3) passer en mb pour certaines fonctions de chaînes : strlen, strpos.

    4) Coder les champs textes de le BD en UTF-8.

    Un gros boulot.

    N'ai-je rien oublié ?

    Lien vers le Tuto ou une bonne discussion ?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Dernière modification par Invité ; 01/07/2018 à 14h13.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    734
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 734
    Par défaut
    Bonjour,

    Merci pour tes liens.

    L'emploi d'UTF-8 oblige-t-il à ajouter mb_ devant toutes les fonctions de chaînes ?

    La question n'est pas soulevée dans le tuto sur la migration.

  4. #4

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    734
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 734
    Par défaut
    Bonjour,

    Je suis sous PHP 7.2, donc pare défaut en UTF-8.

    Actuellement le passage en iso-8859-1 se fait de la façon suivante :

    Dans les scripts PHP primaires :

    header ('content-type: text/html; charset=iso-8859-1');

    Et dans les pages html :

    <meta charset="ISO-8859-1" />

    Et cela marche très bien, sauf que le validateur du W3C me dit que c'est une erreur d'être en ISO-8859-1.

    Pour préparer le passage en UTF-8, je fais le test suivant :

    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
    <?php
     
    header ('content-type: text/html; charset=utf-8');
     
    $str = 'aèô';
     
    $ct = strlen ($str);
     
    $ps = strpos ($str, 'ô');
     
    echo '<!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="utf-8" />
    <title>Essai UTF-8</title>
    </head>
    <body>
    <p>';
     
    echo mb_detect_encoding($str);
    echo '<br>';
    echo $str;
    echo '<br>';
    echo $ct;
    echo '<br>';
    echo $ps;
     
    echo '</p>
    </body>
    </html>';
     
    ?>
    Ce qui sort :

    UTF-8
    a��
    3
    2

    Je ne comprends pas pourquoi è et ô sont mal affichés alors que je suis en UTF-8.

    Si je repasse en iso-8859-1 j'obtiens :

    UTF-8
    aèô
    3
    2

    Et je ne comprends pas pourquoi mb_detect_encoding($str) retourne UTF-8 alors que je suis en iso-8859-1...

    Pouvez-vous m'aider ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    734
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 734
    Par défaut
    Bonjour,

    J'avais oublé d'enregistrer le script en UTF-8, il était en ANSI.

    Après UTF 8 cela donne :

    UTF-8
    aéô
    5
    3

    Il faut donc utiliser mb_strlen et mb_strpos.

    UTF-8
    aéô
    3
    2

Discussions similaires

  1. Conversion ISO-8859-1 vers UTF-8
    Par wd_newbie dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/03/2015, 12h45
  2. Problème migration iso-8859-1 vers utf-8
    Par Loki13 dans le forum ASP
    Réponses: 9
    Dernier message: 20/07/2011, 09h24
  3. Conversion ISO-8859-1 vers UTF-8 dans Eclipse
    Par Jerhom dans le forum Eclipse
    Réponses: 2
    Dernier message: 03/06/2008, 17h35
  4. Réponses: 1
    Dernier message: 05/12/2006, 16h54
  5. conversion iso-8859-1 vers utf-8
    Par gorgonite dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/08/2006, 12h49

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