Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > HTML / DHTML / XHTML > Publications (X)HTML et CSS
Publications (X)HTML et CSS Commentez les articles, actualités et critiques de livres publiés sur les rubriques HTML/DHTML/XHTML et CSS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 12/09/2009, 10h44   #1
Bisûnûrs
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 137
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 137
Points : 13 911
Points : 13 911
Par défaut Encoder son site en UTF-8 sans manquer une étape

Hello,

Je vous présente mon nouveau tutoriel qui va vous guider dans le passage d'un site en UTF-8 en reprenant toutes les étapes à ne pas manquer, ainsi que les différentes alternatives en fonction de votre environnement de travail.

N'hésitez pas à me faire part de vos remarques, questions et suggestions dans cette discussion.

Bonne lecture à tous !
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 12/09/2009, 19h19   #2
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 133
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 18 133
Points : 64 915
Points : 64 915
Salut !

Merci pour cet excellent (comme toujours ) tutoriel qui permettra à beaucoup de mieux comprendre la chaîne complète de l'encodage des caractères.
Je pense que c'est effectivement une ressource qui manquait !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2009, 17h09   #3
Macmillenium
Rédacteur/Modérateur
 
Avatar de Macmillenium
 
Homme
Développeur front-end
Inscription : mars 2008
Messages : 2 330
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur front-end
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : mars 2008
Messages : 2 330
Points : 4 239
Points : 4 239
__________________
Je ne réponds pas aux questions techniques par MP.
Macmillenium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2009, 12h58   #4
franculo_caoulene
Expert Confirmé
 
Avatar de franculo_caoulene
 
Inscription : octobre 2003
Messages : 2 882
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 882
Points : 2 583
Points : 2 583
Bravo et merci pour ce document! On aura enfin un lien vers lequel pointer lorsque la question sera posée.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2009, 10h29   #5
gui80
Membre habitué
 
Inscription : mars 2004
Messages : 276
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 276
Points : 134
Points : 134
Bravo pour cet article !

Les explications sur l'encodage UTF8 general et unicode sur MySQL étaient bienvenues.
Bien penser à en faire de même pour les traitements AJAX.
__________________
amiénois
gui80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2009, 10h32   #6
HiRoN
Expert Confirmé
 
Avatar de HiRoN
 
Développeur Web
Inscription : août 2007
Messages : 2 014
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2007
Messages : 2 014
Points : 2 665
Points : 2 665
Envoyer un message via MSN à HiRoN Envoyer un message via Yahoo à HiRoN
Citation:
Envoyé par Macmillenium Voir le message
+1...
__________________
Pensez à utiliser les ressources disponibles en Dev. Web :
(x)HTML : Cours (X)HTML / FAQ (X)HTML
CSS : Cours CSS / FAQ CSS / Galerie CSS
Javascript : Cours / FAQ / Sources
Mon site : HiRoN's Place
HiRoN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2009, 08h33   #7
hansaplast
Membre chevronné
 
Avatar de hansaplast
 
Homme
Inscription : septembre 2005
Messages : 926
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 926
Points : 605
Points : 605
Bonjours,

j'ai deja subit un site qui tentait de faire de l'utf-8.
Le probleme étant que, par exemple, les données reçues via post/get étaient en latin1. Sur ce site, il fallait donc faire des utf8_encode() à tout bout de champ...
Par curiosité, ce memo résout-il le pb, et si oui, à quel niveau?
(j'ai survolé l'article sans trouvé de réponse)
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2009, 09h15   #8
Bisûnûrs
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 137
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 137
Points : 13 911
Points : 13 911
@hansaplast : Personnellement je n'ai vu aucun soucis de ce type dans mes tests. Les développeurs du site sur lequel tu bossais avaient dû louper une (ou plusieurs) étape, comme l'enregistrement du fichier en UTF-8 sans BOM par exemple.

Si on prend ce code et qu'on enregistre le fichier en UTF-8 sans BOM, on peut voir qu'il n'y a pas de soucis d'accent :

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
<?php
header( 'content-type: text/html; charset=utf-8' );
?>
<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>UTF-8</title>
</head>
<body>
 
<pre>
   <?php
   print_r( $_POST );
   ?>
</pre>
 
<form action="" method="post">
   <p><input type="submit" value="Valeur accentuée" name="soumettre" /></p>
</form>
 
</body>
</html>

Après, comme dit dans mon tutoriel, si tu étais obligé d'utiliser utf8_encode() pour afficher correctement des caractères encodés en UTF-8, c'est que ton serveur renvoyait de l'ISO.

Bref, plusieurs pistes à approfondir pour résoudre ton problème.

Et si tu as l'occasion de démontrer qu'il manque quelque chose à ce niveau là dans le tutoriel avec un exemple que tu avais à l'époque et qui ne fonctionne toujours pas en ayant apporté les modifications nécessaires, tu peux toujours nous en faire part pour qu'on corrige le tutoriel.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2009, 09h21   #9
graphiks
Membre du Club
 
Sky Gunning
Développeur Web
Inscription : février 2009
Messages : 46
Détails du profil
Informations personnelles :
Nom : Sky Gunning
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2009
Messages : 46
Points : 64
Points : 64
Bonjour

Je vient de tomber sur le tutoriel qui est plutôt pas mal, mais je ne comprend pas l'Intérêt d'utiliser utf8_decode ou utf8_encode si tout le site passe en utf-8.

L'Intérêt d'utiliser l'encodage ou le décodage est pour les endroit du site qui ne sont peut être PAS en utf-8... non?

Désolé si je me trompe, ou si j'ai mal compris l'utilisation dans le tutoriel/cour.

Sky
graphiks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2009, 19h47   #10
hansaplast
Membre chevronné
 
Avatar de hansaplast
 
Homme
Inscription : septembre 2005
Messages : 926
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 926
Points : 605
Points : 605
Citation:
Envoyé par Bisûnûrs Voir le message
Si on prend ce code et qu'on enregistre le fichier en UTF-8 sans BOM, on peut voir qu'il n'y a pas de soucis d'accent :
ok, alors je pense que le souci devait venir de là

Citation:
Envoyé par Bisûnûrs Voir le message
Et si tu as l'occasion de démontrer qu'il manque quelque chose à ce niveau là dans le tutoriel avec un exemple que tu avais à l'époque et qui ne fonctionne toujours pas en ayant apporté les modifications nécessaires, tu peux toujours nous en faire part pour qu'on corrige le tutoriel.
non non, je me renseignait juste

et merci
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2009, 09h41   #11
Delphiprog
Nouveau Membre du Club

 
Homme Philippe LECLERCQ
Développeur informatique
Inscription : décembre 2002
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Philippe LECLERCQ
Âge : 54
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : décembre 2002
Messages : 8
Points : 27
Points : 27
Envoyer un message via MSN à Delphiprog
Par défaut Remarquable de clarté

Merci beaucoup pour ce tuto qui éclaire un sujet quasiment pas traité à ma connaissance.

Un petit plus pour les utilisateurs de Notepad++ : pensez à choisir le bon encodage pour les nouveau documents "Paramétrage | Préférences | nouveau document" et cocher UTF-8 sans BOM. Ca évite de devoir rechercher quel script a échappé à cet encodage surtout lorsqu'il y a de nombreuses inclusions.

Néanmoins, cette manipulation n'est pas toujours de bon aloi notamment si vous faites usage de la librairie fpdf qui ne supporte pas l'UTF-8 jusque dans sa version 1.6 . Il vous faudra alors décoder chaque chaîne vers de l'ISO grâce à utf8_decode.

Merci également pour les précieux conseils et tuyaux.
Delphiprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2009, 17h35   #12
Alixe80
Invité régulier
 
Inscription : mars 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 49
Points : 8
Points : 8
Attention que php travaille en ISO ce qui signifie que les fonctions de manipulation de caractères classiques (ucfirst, strlen, strtolower...) ne fonctionnent pas si on manipule des chaines encodées en utf8...
Il est intéressant à ce moment là de repasser la chaine de utf-8 vers ISO et inversément ensuite en utilisant utf8_encode() et utf8_decode()...
Ou il faut installer et configurer le module mbstring ...
Dommage que le tutoriel n'en parle pas car j'ai lu ça ailleurs mais j'aurais aimé plus d'infos quant à ce module... ou ce qu'il est mieux de faire...
Vivement php 6 qui lui travaillera en UTF-8
Alixe80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2009, 19h33   #13
doctorrock
Rédacteur
 
Avatar de doctorrock
 
Homme Julien Pauli
Architecte de système d'information
Inscription : mai 2006
Messages : 603
Détails du profil
Informations personnelles :
Nom : Homme Julien Pauli
Âge : 30
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : mai 2006
Messages : 603
Points : 3 926
Points : 3 926
Code :
1
2
3
4
 
iconv_set_encoding('internal_encoding','utf-8');
iconv_set_encoding("output_encoding", "iso-8859-1");
ob_start('ob_iconv_handler');
Ce bout de code convertit de l'UTF-8 dans le buffer de sortie de PHP vers de l'ISO.

J'aime bien aussi utiliser le buffer de sortie de PHP pour appliquer ce genre de traitements, il est tout à fait fait pour ça ^^
__________________
.: Expert contributeur certifié PHP/ZF :.
Mes articles - Twitter - GitHub
doctorrock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2009, 13h07   #14
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 110
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 110
Points : 10 346
Points : 10 346
Envoyer un message via Skype™ à thelvin
Citation:
Envoyé par Alixe80 Voir le message
Il est intéressant à ce moment là de repasser la chaine de utf-8 vers ISO et inversément ensuite en utilisant utf8_encode() et utf8_decode()...
Le principe d'utf-8 n'est-il pas justement qu'il contient tous les caractères du monde alors qu'ISO n'en contient que 250, et qu'on ne peut donc pas convertir l'utf-8 vers l'ISO ?
thelvin est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2010, 11h41   #15
stundman
Invité régulier
 
Homme
Ingénieur d'études
Inscription : octobre 2005
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur d'études

Informations forums :
Inscription : octobre 2005
Messages : 11
Points : 8
Points : 8
Par défaut Ajouts d'infos

Bonjour et merci pour ce tutoriel ! (et bonne année aussi)

Dans l'éditeur PHPEdit (v3.4.4) :
- option des nouveaux fichiers : Outils > Editer préférences ou F10, Menu Fichiers et copies de sauvegarde, options des fichiers, section type d'encodage
- enregistrement d'un fichier ouvert en UTF8 : Fichier > Encodage de fichier > UTF-8

Sinon ne pas oublier dans les formulaires accept-charset="utf-8" exemple :
Code :
1
2
 
  <form name="logon" action="index.php" method="post" title="Identification" accept-charset="utf-8">
Pour moi tout a très bien fonctionné, ça m'a évité d'utiliser htmlentities (car en plus j'empêche d'insérer des caractères spéciaux du type < et >) et j'ai aussi pu mettre des accents dans les commentaires et les voir affichés dans le HTML généré par doxygen.
stundman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2010, 13h35   #16
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 110
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 110
Points : 10 346
Points : 10 346
Envoyer un message via Skype™ à thelvin
Citation:
Envoyé par stundman Voir le message
Sinon ne pas oublier dans les formulaires accept-charset="utf-8"
?

C'est vraiment utile dans des cas précis, ou c'est pour la beauté du geste et la complétude par principe de l'information ?
thelvin est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2010, 22h47   #17
gui80
Membre habitué
 
Inscription : mars 2004
Messages : 276
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 276
Points : 134
Points : 134
Bonsoir,

je n'avais jamais vu de propriété accept-charset. Pour m'être renseigné, cela ne fonctionne pas avec IE. Donc, c'est une notion à ne pas prendre en compte quand on souhaite être cross-browser.
__________________
amiénois
gui80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2010, 08h46   #18
Bisûnûrs
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 137
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 30
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 137
Points : 13 911
Points : 13 911
Citation:
Envoyé par stundman Voir le message
Sinon ne pas oublier dans les formulaires accept-charset="utf-8"
Si on en croit cette page :
http://giminik.developpez.com/xhtml/form.html
cet attribut n'agit pas sur l'encodage lors du transfert de données vers le serveur, mais décrit seulement ceux qui sont lus par le serveur (preuve en est, on peut en mettre plusieurs). Donc effectivement il n'est pas très utile, sauf à des fins descriptives.

Mais sinon merci pour les autres remarques, je vais essayer de les prendre en compte rapidement.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2010, 16h55   #19
Wormus
Membre confirmé
 
Avatar de Wormus
 
Inscription : septembre 2005
Messages : 262
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 262
Points : 217
Points : 217


Merci beaucoup pour ce tuto ! après une journée entière à galérer avec l'encodage sur mon site, j'en pouvais plus.
Maintenant je mettrais tout en UTF-8 !!
__________________
Bankaï !!
Wormus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2010, 14h45   #20
gomodo
Membre régulier
 
Inscription : mai 2007
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 181
Points : 82
Points : 82
Citation:
Envoyé par Alixe80 Voir le message
Attention que php travaille en ISO ce qui signifie que les fonctions de manipulation de caractères classiques (ucfirst, strlen, strtolower...) ne fonctionnent pas si on manipule des chaines encodées en utf8...
Et donc en pratique, il faut ouvrir tous les fichiers PHP et rechercher toutes les fonctions de traitement de chaine et les fonctions PCRE (par exemple preg_match) (avec notepad++ par exemple) susceptible de traiter des caractères accentués, et effectuer les adaptations comme précisé par Alixe80 (jouer avec utf8_decode() avant traitement et utf8_encode() après, ou trouver et utiliser la fonction mb_ équivalente).

En pratique encore, je conseille de tagger chaque modif dans un commentaire (pour les retrouver facilement avec notepad++) en prévision de PHP6.. puisqu'il travaillera nativement en utf-8 : il faudrat alors supprimer tout les utf8_encode() et utf8_decode().. un futur tracas de moins . Pour les fonctions mb_string, je suppose qu'elles seront supportées par PHP6..
gomodo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h45.


 
 
 
 
Partenaires

Hébergement Web