Menu principal

Recherche

Publicité










convertir un site en UTF8 - PHP/MySQL
#1
Webmestre
Benutzerinformationen
(Ce travail est une copie provenant de ce site Je remercie leurs auteurs)

Alors qu'il y a quelques années l'UTF8 naissait
, réconcilliant le monde entier, on aurait pu penser qu'il aurait
immédiatement trouvé sa place. Si aujourd'hui créer un projet en UTF-8
est bien loin d'être systématique, il ne s'agit pas forcément d'un
manque de volonté, mais plutôt d'une difficulté de mise en oeuvre,
souvent déconcertante. Le problème d'encodage est récurrent, mais je
vais essayer dans cet article de vous prouver que la mise en oeuvre de
l'UTF-8 dans vos projets peut se faire très rapidement. Voici donc les
grandes étapes pour migrer votre application web en UTF8, et pourquoi
pas conquérir de lointains marchés !

Requêtes HTTP


Tout d'abord quand un visiteur arrive sur votre site, son navigateur
doit savoir qu'il a affaire à de l'UTF8, alors voici la marche à
suivre.


  • Par ordre de priorité pour le navigateur :

  • Fixer le parametre charset dans les requêtes HTTP (cf W3C)
    • dans apache remplacez AddDefaultCharset ISO-8859-1 par AddDefaultCharset UTF-8, (dans httpd.conf sinon rajoutez la ligne dans le .htaccess)
    • ou/et dans PHP avec header('Content-Type: text/html; charset=utf-8');
  • Mettre après le dans votre fichier HTML le code suivant (ce code est connu de tous)




MySQL


  • Ensuite, il faut premièrement changer les interclassements
    • de la base
      • ALTER DATABASE nomBase CHARACTER SET UTF8
    • des tables
      • ALTER TABLE nomTable CHARACTER SET UTF8
    • des colonnes
      • ALTER TABLE nomTable CONVERT TO CHARACTER SET UTF8
      • ceci changera toutes les colonnes de la table et convertira les
        données. Si vous aviez déjà mis de l’UTF8 dans une colonne avant d’en
        changer l’encodage il est encore possible de rétablir la cohérence des
        données :
        • ALTER TABLE nomTable CHANGE nomColonne nomColonne BLOB;


          ALTER TABLE
          nomTable CHANGE nomColonne nomColonne TEXT CHARACTER SET UTF8;
  • Puis il faut prévenir MySQL que vos interractions se feront en UTF8 en envoyant à chaque connexion :
  • SET NAMES UTF8




Editez en UTF8




Pour cela il faut configurer votre éditeur pour que vos fichiers soient
en UTF8 (c’est nécessaire uniquement dans le cas de fichiers avec
données sensibles - cad avec accents ou autres caractères non ASCII).


Veillez à placer l’encodage en UTF8 sans BOM car sinon le fichier contiendra un octet d’entête et PHP ne pourra plus envoyer de header ou de session (bug PHP#22108).



Encodage : convertir un site en UTF8 - PHP/MySQL

Developpez en PHP

Attention, une fois que votre site est en UTF-8 il va falloir changer quelques habitudes de développement :
  • jetez un coup d’oeil à l’extension Mbstring, par exemple pour strlen, utilisez mb_strlen
  • Comme l'a dit irnine94 dans son commentaire, faites bien
    attention car certaines fonction prennent en paramètre un charset qui
    par défaut est l'ISO vous devrez donc passer en paramètre UTF-8, comme
    par exemple la fonction htmlentities




Bonne chance à vous, et gardez à l'esprit que l'idée générale est d'avoir de l'UTF8 à tous les endroits de votre application.

Posté le : 21/02 19:09
Outils MP Email PDF Bookmark Imprimer Réponse Citation Rapport





 Réponse Ecrire un nouveau message



Commentaires récents



 

C.N.I.L 1113850 | Communauty the Nullos ami de Xoops CMS
XOOPS Code hosted on SourceForge   PHP   Powered by MySQL   Powered by Smarty   OSI certified  GPL  All content on this site is subject to the Creative Commons License
  Design by Cyberianet - Katisuhara