Page 1 sur 3

Suggestion Tutoriel encodage utf-8 pour la faq

Posté : 02 déc. 2008, 15:11
par jojolapine
Bonjour,
Il serait bon je pense, de faire un nouveau mini-tuto dans la faq qui explique comment utilise t'on l'encodage utf-8 (ou d'autres aussi pourquoi pas) , dans les applications, les rapports entre bases de donnée/script php/entêtes html
Afin qu'il y est moins de sujets "caractères bizar dans ma page", ou que l'on puisse au moins rediriger l'auteur vers une synthèse bien structuré qui explique le tout...
Qu'en pensez-vous?
Je veux bien aiser à la rédaction (surtout la partie uft-8), mais j'ai pas les connaissances pour faire ça tout seul, et expliqué le pourquoi du comment...
A vos avis ;)

Posté : 02 déc. 2008, 15:17
par yaug
Plutôt d'accord aussi.
C'est une question qui revient assez fréquemment en effet.

Je peux aider, voir le faire.. si nécessaire.

Posté : 02 déc. 2008, 21:17
par mere-teresa
Toutes les bonnes volontés sont bienvenues. Vous pouvez commencer à vous concerter sur ce que vous voulez voir apparaître dans une telle FAQ, et faire un plan ou une liste de questions.
Celles auxquelles vous pouvez répondre, vous le faites, ainsi la FAQ sera commencée.

Posté : 03 déc. 2008, 17:11
par yaug
Bon.
Je me suis fait un article du coup sur le travail en utf8 que je pourrais facilement transformer en FAQ.

J'ai envoyé ça à mère théresa du coup.

Posté : 04 déc. 2008, 11:25
par yaug
Question bête.
Dans le forum FAQ il est indiqué que seules les personnes autorisées peuvent poster.
Comment deviens ton autorisé ?
Ou a défaut à qui file ton une FAQ ?

Merci.

Posté : 04 déc. 2008, 13:55
par Sékiltoyai
Qui est autorisé ? Euh, bah nous :)

Posté : 04 déc. 2008, 13:57
par yaug
Grmbl :evil:
Ceci était un message du comité des geeks mécontents.

Posté : 04 déc. 2008, 14:16
par Hywan
Osef & raf !
Ceci était un communiqué des ViPHP ;-).

Posté : 04 déc. 2008, 14:17
par jojolapine
Tu pourrais montrer içi où m'envoyer un mp pour voir ce que tu as faits, si je peux apporter d'autres choses?
Et pis c'est pas grave de pas avoir accès au truc, hein?
Y suffit de faire passer au vip... ;)

Posté : 04 déc. 2008, 14:46
par albat
Qui est autorisé ? Euh, bah nous :)
Osef & raf !
Ceci était un communiqué des ViPHP. ;-)
Hé, les deux affreux, c'est pas bientôt fini de taquiner ? :twisted: :lol:

Posté : 08 déc. 2008, 11:40
par yaug
Bon.
Au vu des réponses (ou pas),je vais du coup proposer cette FAQ ici afin d'avoir quelques retours, suggestions et autres améliorations.

Bonjour.

J'ai souvent à voir des gens avoir des soucis d'encodage à tout va. Étant donné qu'avec la version 6 de PHP nous seront amené à coder via unicode, il est bon de se mettre à coder en utf-8 (si ce n'est pas encore le cas) pour prendre l'habitude.

Voici un petit tutoriel sur comment mettre en place un environnement en utf8, et comment l'utiliser. Cela peut paraître logique à certains, mais les débutants apprécieront.

Mettre en place son environnement.

1. La base de donnée

Commençons par notre base de données. Je vais prendre ici l'exemple de MySql, mais cela reste applicable à toutes les bases de données. Si vous décidez de passer en utf8, il sera nécessaire que votre base de donné soit elle aussi dans cet encodage. Comment faire? C'est très simple, vous pouvez :

- soit choisir l'encodage lorsque vous créez une base de données, en choisissant l'encodage : utf8_general_ci/utf8_unicode_ci.

Cliquez ici pour un exemple

- soit en exécutant la requête suivante au début de votre script : SET NAMES UTF8

Il va sans dire que la meilleure des solutions est de créer votre base de donnée en choisissant de l'encoder en utf8 DES LE DÉBUT !

2. L'éditeur

Autre tâche importante après la configuration de votre base de données : configurer votre éditeur. De base bon nombre d'éditeur son configuré pour le latin1. Il va donc nous falloir changer cela. Vous trouverez ici quelques exemples d'éditeur, mais la logique est la même pour tous : Encoder dès le départ vos fichiers en utf8 !

- Eclipse : Dans window > preferences > General > WorkSpace, choisissez l'encodage UTF-8 dans la boite "Text file encoding".

Cliquez ici pour un exemple

- Notepad++ : Dans Paramètrage > Nouveau document, choisissez l'encodage des nouveaux documents en UTF8. Pour modifier le document courant, allez dans Format et choisissez "Encoder en UTF8".

Cliquez ici pour un exemple

- Zend Studio : Tools > Desktop > Apparence : Choisissez UTF8 comme encodage.

Cliquez ici pour un exemple

3. Le header html

Maintenant que nous avons configuré correctement nos outils. Il nous reste à modifier l'encodage de nos pages. Lorsque nous passons sur une page web, notre navigateur regarde dans le header de notre page, quel est l'encodage à utiliser (si il est spécifié). Nous allons donc préciser au navigateur que notre page est à lire en utf8 de la manière suivante :

Code : Tout sélectionner

<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
4. Via http : le header php

Lorsque vous visualisez une page web, vous vous reposez sur le protocole http. Parmi les informations envoyés concernant une page figure notamment l'encodage. Vous avez la possibilité de forcer l'entête http qui est envoyée grâce à ce code php :
<?php
header('Content-type: text/html; charset=UTF-8');
?>
Attention, pensez à placer cette information en haut de votre code, car une fois que du texte à été envoyé, le header n'est plus accessible et cela vous renverra une erreur.

5. Utiliser les fonction utf8_encode et utf8_decode

Il arrive parfois que l'on ne puisse régler tous ces paramètres (soit en n'ayant pas la main sur une partie, soit en ne pouvant modifier ce qui a été fait auparavant). On peut alors utiliser les fonctions utf8_encode() et utf8_decode() de php.

- utf8_encode : Cette fonction prend en paramètre un string encodé en latin1 / iso-8859-1 et retourne le même string mais encodé en UTF8.

- ut8_decode : Cette fonction prend en paramètre un string encodé en UTF8 et retournera ce même string encodé en latin1 / iso-8859-1

6. Quelques problèmes connus
Voici quelques problèmes courants et leur solution :

Problème : Apparition de caractères tels que "Ã", "é" ...

Solution : Lorsque des caractères de ce type apparaisse, c'est que votre donnée est encodée en utf8 mai que le navigateur tente de lire en mode "normal" (latin1 ou iso-8859-1). Pensez à spécifier le méta html vu au dessus.

Problème : Apparition de caracètères comme "�" ...

Solution : Lorsque ce caractères apparait, c'est en fait l'inverse, notre navigateur est réglé pour lire de l'utf8 (via le méta html ou la fonction header() de php) mais tente de lire du texte qui est encodé normalement (latin1 ou iso-8859-1). Pensez à encoder votre fichier en utf8 ou utilisez la fonction utf8_encode() si vos données proviennent de l'extérieur (base de données, import de fichiers etc ...).

Conclusion

On se rappelle donc qu'il faut :

- Encoder sa base de données en utf8, ou a défaut utiliser le "set names utf8"

- Configurer correctement son éditeur pour que les fichiers soient encodés en utf8.

- Préciser au navigateur l'encodage de la page.

- Ne pas paniquer ! Il est courant, lors de l'encodage d'un travail existant, d'avoir à changer à la main une partie des caractères mal encodés. Ne paniquez pas, soyez patient.

- TOUJOURS TRAVAILLER EN UTF8, et ce, dès le départ !

N'hésitez pas à me signaler toute erreur, à me soumettre des modifications et à me poser vos questions.

Posté : 08 déc. 2008, 11:59
par Invité
Moi y a quelque chose qui me chagrine...
C'est le fait d'enoder la base en utf8 au départ, chez moi ça ne me dispense pas d'utiliser SET NAMES, alors je sais pas si c'est moi qui fait des zouaveries ou si c'est que les configuration peuvent varier?

Posté : 08 déc. 2008, 12:37
par yaug
Ouvre un post sur le forum voulu du coup.
Je veux bien essayer de répondre mais essayons de garder chaque chose à sa place. :wink:

Posté : 08 déc. 2008, 12:51
par jojolapine
Oui en fait c'était moi l'auteur du post précédent...
Non en fait c'était ma faute je viens de m'en rendre compte.... :oops:
Bon ben moi je vois pas grand chose à redire sur ce que t'a écrit...
Y a plus qu'a attendre que des vip passent par là ;)

Posté : 08 déc. 2008, 16:38
par AB
Bonne initiative mais je trouve ça insuffisamment structuré.

Par ailleurs on pourrait avantageusement se passer des deux premières lignes de présentation au profit d'un texte sur l'historique etc.

Pour illustrer mes propos voici un lien que je trouve mieux structuré tout en étant plus complet http://electron-libre.fassnet.net/utf8.php

Ce serait bien de reprendre le meilleur des deux mondes :)