Bonjour à tous,

La catégorie «Encodage et internationalisation» de la FAQ du forum ne comporte que deux items: «Comment bien déclarer l'encodage des caractères d'un document ?» et «Charset Iso-8859-1, iso-8859-15, utf-8, lequel choisir ?».

Si le premier est plutôt correct (pour les erreurs, fustiger votre serviteur), force est de constater que le second est à revoir complètement. D'ailleurs, il ne répond même pas à la question posée.

Ce message est donc un appel à contribution: pensez-vous pouvoir refondre cet item de la FAQ et proposer quelque chose de cohérent?

Je rappelle que pour toute contribution à la FAQ, il y a 10 Kiwiz à gagner. On ne sait pas encore à quoi ça sert au juste, mais il parait qu'on ne devrait pas tarder à l'apprendre. Smiley lol

Qui est partant? Smiley smile


PS: ce sujet est en post-it temporaire.
Modifié par Florent V. (19 Oct 2007 - 01:11)
sur mon blog, je m'étais essayé à d'y voir plus clair avec quelques expérimentations : Iso-8859-1 ou utf-8, lequel choisir ? mais avec le recul, je crois que mon analyse n'était pas si pertinente que ça, et que le problème n'est pas si simple que ça.
J'espere que sur le fofo des gens pourront nous éclairer, car cela m'intéresse beaucoup d'y voir plus clair Smiley smile
Je serais plutôt interessé, on poste son CV où ? Smiley murf


(plus serieusement, comment procède-t-on ? Faut-il envoyer une proposition, etc)
Oui, ici même c'est bien. Smiley smile
Ça évitera que plusieurs personnes travaillent dessus en même temps, chacun dans son coin.
Allez un premier essais, à vos critiques...

a écrit :

Il faut tout d'abord distinguer deux "familles" d'encodage: les locaux et les internationaux.
Les jeux de caractères locaux (dont font partie iso-8859-1 et iso-8859-15) sont destiné à des documents dans une langue ou un groupe de langue.
Au contraire les jeux de caractères internationaux (dont fait partie l'utf-8) sont destinés à encoder des document dans n'importe quelle langue.


Alors que choisir ?
On peut observer deux cas de figure:


Mon site est international ou est forcement destiné à le devenir
La seule solution gérable dans ce cas de figure est l'utf-8. En effet, il gère indifféremment les différents caractères nécessaires à ces langues permettant de ne pas se préoccuper de la nature du contenu.


Mon site est actuellement francophone.
C'est ici que la question se pose vraiment, et la réponse est -comme d'habitude- ça dépend.
Voici un aperçu des avantages et inconvénients de chaque:

L'iso-8859-1...
-est simple à employer (c'est souvent celui "par défaut").
-est l'encodage de base de pas mal de langages de programmation.
-est souvent déjà en place.
-est le plus minimal possible (donc souvent le plus rapide).
mais...
-implique d'utiliser des entités html dès que l'on souhaite insérer un caractère spécial.
-ne gère que les langues occidentales et est donc faiblement adaptable.

L'iso-8859-15 est une modification de l'iso-8859-1 certains caractères inutiles ont été retirés et d'autres ajoutés à leur place (notamment €). Il présente globalement les mêmes caractéristiques que l'iso-8859-1 avec cependant le désavantage d'être apparu plus récemment et d'être donc moins répandu/supporté.

L'utf-8...
-gère la plupart des langues utilisables et est donc facilement adaptable.
-permet de se passer de la plupart des entités html.
-représente "l'aboutissement" de l'encodage, il est peut probable que vous ayez à changer pour un autre.
mais...
-est plus complexe à employer (parfois mal géré ou provocateur de comportements étranges).
-n'est pas toujours bien géré par les différents langages de programmation.
-implique souvent des modifications d'un site déjà établi.
-code les caractères d'une manière plus complexe (et consomme donc souvent légèrement plus de ressources)

Mais la tendance étant à l'internationalisation et à la portabilité, il devient populaire, de fait son support est assuré de plus en plus efficacement par les éditeurs texte autant que par les langages de programmation et les bases de données (php6 par exemple travaillera par défaut avec de l'utf-8 en interne, mysql5 permet déjà la gestion des jeux de caractère).



En conclusion l'on peut dire qu'une bonne partie des désavantages de l'iso-8859-1 proviennent de sa définition même, alors que ceux de l'utf-8 disparaissent petit-à-petit. La balance pencherait donc plutôt du côté du dernier.
Cependant ça ne fait pas du premier un encodage obsolète pour autant, il faut seulement prendre conscience des limitations que l'on s'impose et si elles ne risquent pas de devenir gênantes à l'avenir. Rappelez-vous qu'il est bien plus simple de commencer directement dans le bon encodage que de changer à posteriori.
Hello,

Ça me semble très bien. Il y aurait juste deux-trois corrections à faire.


a écrit :
Il faut tout d'abord distinguer deux "familles" d'encodage: les locaux et les internationaux.

Les termes sont utilisés ou bien c'est une classification personnelle. Dans le deuxième cas, il faudra placer les termes «locaux» et «internationaux» entre guillemets.

a écrit :
Mon site est international ou est forcement destiné à le devenir
La seule solution gérable dans ce cas de figure est l'utf-8.

À vrai dire, l'utf-8 s'impose si on doit gérer plusieurs systèmes d'écriture (alphabets, syllabaires, idéogrammes...). Si on a un site en français + anglais + espagnol, l'iso-8859-1 sera adapté. Mais si on envisage de rajouter le tchèque l'année suivante, mieux vaut partir sur de l'utf-8.

Autre remarque: il faudrait peut-être rappeler très brièvement qu'iso-8859-1 est parfois désigné sous le nom «latin1» (et «latin9» pour iso-8859-15, si je me souviens bien).

a écrit :
-implique d'utiliser des entités html dès que l'on souhaite insérer un caractère spécial.

Attention à la confusion possible «caractère spécial = caractère hors ASCII (dont caractères accentués du français)». Il sera nécessaire d'utiliser des entités HTML pour les caractères ne faisant pas partie de la liste des 189 caractères disponibles pour cet encodage.

a écrit :
L'utf-8...
(...)
-permet de se passer de la plupart des entités html.

De la totalité, non?

a écrit :
mysql5 permet déjà la gestion des jeux de caractère).

Ça n'est pas possible depuis la version 4.1 ou 4.3, je sais plus exactement?
Bonsoir,

a écrit :
Les termes sont utilisés ou bien c'est une classification personnelle. Dans le deuxième cas, il faudra placer les termes «locaux» et «internationaux» entre guillemets.

J'ai "pondu" ça, je penses donc que les guillemets sont de rigueure à moins que quelqu'un ne connaisse un site de référence utilisant ces termes.

a écrit :
L'utf-8...
(...)
-permet de se passer de la plupart des entités html.

De la totalité, non?
Sauf erreur il me semble que le & dans les URL reste de vigeur.

a écrit :
Ça n'est pas possible depuis la version 4.1 ou 4.3, je sais plus exactement?

Je viens de verifier c'est bien 4.1.

Pour le reste il n'y a rien a répondre.

Essais 2:
a écrit :
Il faut tout d'abord distinguer deux "familles" d'encodage: les "locaux" et les "internationaux".
Les jeux de caractères locaux (dont font partie iso-8859-1 et iso-8859-15) sont destiné à des documents dans un seul système d'écriture (une langue ou un groupe de langue).
Au contraire les jeux de caractères internationaux (dont fait partie l'utf-8) sont destinés à encoder des document dans n'importe quel système d'écriture (et donc n'importe quelle langue).

NB: iso-8859-1 se retrouve également sous la dénomination "latin 1" et iso-8859-15 sous "latin 9".


Alors que choisir ?
On peut observer deux cas de figure:


Mon site gère différents systèmes d'écriture (par exemple l'espagnole et le russe) ou va le faire.
La seule solution gérable dans ce cas est l'utf-8. En effet, il affiche correctement les différents caractères nécessaires à tous les systèmes permettant de ne pas se préoccuper de la nature du contenu lors de son affichage.



Mon site ne gère actuellement qu'un système d'écriture (par exemple anglais et français).
C'est ici que la question se pose vraiment, et la réponse est -comme d'habitude- ça dépend.
Voici un aperçu des avantages et inconvénients de chaque:

L'iso-8859-1...
-est simple à employer (c'est souvent celui "par défaut").
-est l'encodage de base de pas mal de langages de programmation.
-est souvent déjà en place.
-est le plus minimal possible (donc souvent le plus rapide).
mais...
-implique d'utiliser des entités html dès que l'on souhaite insérer un caractère ne faisant pas partie des 189 disponibles .
-ne gère que les langues occidentales (latines) et est donc faiblement adaptable.

L'iso-8859-15 est dérivé de l'iso-8859-1 certains caractères jugés inutiles ont été retirés et d'autres ajoutés à leur place (notamment €). Il présente globalement les mêmes caractéristiques que l'iso-8859-1 avec cependant le désavantage d'être apparu plus récemment et d'être donc moins répandu/supporté.

L'utf-8...
-gère la plupart des langues utilisables et est donc facilement adaptable.
-permet de se passer de la plupart des entités html.
-représente "l'aboutissement" de l'encodage, il est peut probable que vous ayez à changer pour un autre.
mais...
-est plus complexe à employer (parfois mal géré ou provocateur de comportements étranges).
-n'est pas toujours bien géré par les différents langages de programmation.
-implique souvent des modifications d'un site déjà établi.
-code les caractères d'une manière plus complexe (et consomme donc souvent légèrement plus de ressources)

Mais la tendance étant à l'internationalisation et à la portabilité, il devient populaire, de fait son support est assuré de plus en plus efficacement par les éditeurs texte autant que par les langages de programmation et les bases de données (php6 par exemple travaillera par défaut avec de l'utf-8 en interne, mysql permet la gestion des jeux de caractère depuis sa version 4.1).



En conclusion l'on peut dire qu'une bonne partie des désavantages de l'iso-8859-1 proviennent de sa définition même, alors que ceux de l'utf-8 disparaissent petit-à-petit. La balance pencherait donc plutôt du côté du dernier.
Cependant ça ne fait pas du premier un encodage obsolète pour autant, il faut seulement prendre conscience des limitations que l'on s'impose et savoir si elles ne risquent pas de devenir gênantes à l'avenir. Rappelez-vous qu'il est bien plus simple de commencer directement dans le bon encodage que de changer à posteriori.



Exemples pour illustrer ces propos:
1. Une entreprise est implantée en Espagne et effectue également des ventes en France. Son site est disponible dans ces deux langues et utilise l'iso-8859-1.
Le problème survient l'année suivante, elle souhaite étendre ses activités au Maroc or pour afficher un contenu en arabe elle devra convertir son site en utf-8.
Dans ce cas, il aurait mieux valut commencer dès le départ le site en utf-8.

2. Dupont maintient pour sa famille un petit site personnel ou il affiche les photos de ses week-end avec un script pour les commenter. Le contenu est exclusivement francophone et le restera.
Dans ce cas, l'utilisation de l'iso-8859-1 lui simplifiera probablement la vie alors que l'utilisation de l'utf-8 ne lui apporterai au mieux aucun bénéfice et au pire des problèmes.

Modifié par Necromantik (10 Oct 2007 - 23:36)
Salut,

tout d'abord félicitations pour le texte : limpide Smiley cligne !

Par contre qu'est-ce que tu veux dire par :
- iso-8859 = facile
- utf8 = difficile
Smiley rolleyes ?

je trouve au contraire l'utf8 bien plus facile à manier (notamment en ce qui concerne les entités) à partir du moment où la base mysql n'est pas "bloquée" sur iso (ce qui était le cas chez OVH voilà 2 ou 3 ans). Mais j'oublie peut-être (sans doute Smiley lol ) quelque chose ! Tu aurais des précisions ?
Salut,

En effet, c'est très bien. Par contre, je trouve qu'il manque au moins une petite référence aux jeux de caractères (Unicode entre autres), et quelques liens d'explication plus poussée.
Hop, c'est en ligne. J'ai fait des corrections de typographie et parfois de légères corrections syntaxiques, mais je n'ai à priori pas touché le contenu lui-même. J'ai par contre rajouté des liens complémentaires qui vont bien.

Je bipe les admins pour attribution des dix kiwiz. Smiley cligne
Modifié par Florent V. (11 Oct 2007 - 11:33)
De rien, ce n'est qu'un juste retour pour ce qu'apporte Alsacréations.



Merci Florent pour les liens et les ajustements.



@Heyoan:
un exemple tout simple:
<?php
echo strlen('Hellô');
?>

Affiche 5 si le document est enregistré en iso et 6 en utf-8.
Ce n'est plus le cas en version 6, d'où la note disant que la plupart des défauts on tendance à disparaître, mais en attendant ça fait partie des complications (rien d'insurmontable on est d'accord Smiley cligne ).
Necromantik a écrit :

<?php
echo strlen('Hellô');
?>

Affiche 5 si le document est enregistré en iso et 6 en utf-8.

Smiley eek J'avais jamais fais gaffe à ça ! Bon ben merci pour l'exemple Smiley cligne .