Pour passer son site internet du
latin1 à l'
unicode, il va falloir modifier votre environnement de travail. En effet, c'est lui qui va encoder les caractères du fichier et les sauvegarder. La majorité des éditeurs encodent, par défaut, vos fichiers en
latin1.
Mais ce n'est pas tout. Tous vos fichiers déjà créés sont encodés en
latin1 : il va donc falloir les modifier pour que les caractères utilisent la norme d'encodage de l'
unicode.
On va donc commencer par l'environnement de travail, puis on verra comment encoder les fichiers après de façon automatique avec PHP.
L'environnement de travail
Il faut configurer votre outil de travail de telle sorte que lors de la création de tout nouveau fichier, l'encodage des caractères soit par défaut réglé à
UTF-8. Si vous êtes sous Notepad++, allez dans
Paramétrage,
Préférences, sélectionnez l'onglet
Nouveau document / Répertoire puis cochez
UTF-8 sans BOM.
Petite question ... pourquoi tu as mis sans BOM en rouge ?
Ah oui, il serait préférable de me justifier sur ce point-là. Le
BOM est le marquage d'ordre des octets du fichier, complètement inutile en
UTF-8. Si jamais vous choisissez cette option, l'éditeur de texte insérera cet ordre d'octets
au tout début du fichier. Ainsi, si vous voulez appeler la fonction
header de PHP, vous ne pourrez pas. Des caractères auront déjà été envoyés au navigateur : c'est la
marque d'ordre des octets. Pensez donc bien à ne jamais les insérer.
Encoder les fichiers déjà créés
Là, vous avez deux solutions. La première consiste à modifier les fichiers 1 à 1. Ouvrez le fichier avec votre éditeur et, si vous êtes sous Notepad++, allez dans
Format puis cliquez sur
Convertir en UTF-8 (sans BOM). Enregistrez le fichier et le tour est joué.
Je me permets de ré-insister sur le fait qu'il est important de spécifier que l'on ne veut pas le BOM du fichier. Relisez juste au-dessus si vous avez oublié pourquoi ou si vous avez sauté la partie.
Je vais maintenant vous dire comment modifier tous les fichiers d'un répertoire pour les encoder en
UTF-8 grâce à PHP. On va pour cela faire appel à la fonction
utf8_encode. Cette fonction permet d'encoder une chaine de caractères donnée (encodée en
latin1, soit
ISO-8859-1) en
UTF-8.
Ce tutoriel a pour but de vous dire comment passer du
latin1 à l'
unicode et non de vous faire faire des exercices en utilisant PHP, donc je vais vous donner le script tout fait. Placez ce fichier dans le répertoire à encoder et lancez-le. Une fois que le script a terminé de travailler, tous les fichiers du répertoire seront encodés.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | <?php
$dossier = opendir ('.');
while ($fichierAEncoder = readdir ($dossier))
{
if (is_file ($fichierAEncoder))
{
$contenu = file_get_contents ($fichierAEncoder);
$fichier = fopen ($fichierAEncoder, 'w');
fputs ($fichier, utf8_encode ($contenu));
fclose ($fichier);
}
}
closedir ($dossier);
?>
|
Les fichiers contenus dans les sous-répertoires ne seront donc pas encodés. Si vous voulez qu'ils le soient, exécutez ce code (tous les fichiers contenus dans le même répertoire que le script ainsi que dans tous les sous-répertoires seront encodés) :
Code : PHP 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 | <?php
function encoderDossier ($dossierAEncoder)
{
$dossier = opendir ($dossierAEncoder);
while ($fichierAEncoder = readdir ($dossier))
{
if ($fichierAEncoder != '.' AND $fichierAEncoder != '..')
{
if (is_file ($fichierAEncoder))
{
$contenu = file_get_contents ($fichierAEncoder);
$fichier = fopen ($fichierAEncoder, 'w');
fputs ($fichier, utf8_encode ($contenu));
fclose ($fichier);
}
else
encoderDossier ($dossierAEncoder . $fichierAEncoder . '/');
}
}
closedir ($dossier);
}
encoderDossier ('./');
?>
|
Et voilà, tous vos fichiers sont encodés en
UTF-8, et votre environnement de travail est bien configuré.
Et si j'ai pas Notepad++ ?
- Si vous êtes sous Eclipse, cliquez sur Window > Préférences > dans le menu de gauche sur General > en bas sur Workspace > dans la boite Text file encoding cochez Other et sélectionnez UTF-8 ;
- Si vous êtes sous Dreamweaver, cliquez sur Edition > Préférences > Nouveau document > Codage par défaut ;
- Si vous êtes sous Zend Studio, allez sur Tools > Desktop > Apparence ;
- Si vous êtes sous gedit, cela se fait lors de l'enregistrement du fichier. Dans la boite de dialogue ouverte après avoir cliqué sur Fichier > Enregistrer sous..., choisissez Locale actuelle (UTF-8) dans la liste déroulante située en bas.
Je sais qu'il y en beaucoup d'autres mais d'une part, je ne les connais pas tous, et d'autre part il serait trop long de tous les citer. Fouillez un peu dans votre éditeur ou si vous êtes vraiment bloqué, procédez à une
une recherche sur Google. Au pire des cas, le forum du Site du Zér0 est là.
