Quel est le meilleur encodage entre UTF-8 et ISO ?

WRInaute discret
Bonjour à tous,

Je suis un grand débutant en programmation, et même si je me débrouille pour faire des sites en pur autodidacte, il y a tout de même des notions théoriques qui me manquent...

Je crois avoir vaguement compris ce que c'était que l'encodage, mais ça s'arrête là... Aussi j'espère que quelqu'un de plus expérimenté pourra répondre à mes questions sur le sujet :

Quelle est la différence entre les encodages UTF-8 et ISO ? Et surtout, quelle est la meilleure option ?

J'ai remarqué qu'en choisissant l'une ou l'autre il y a plus de risques de voir les caractères accentués bugger (apparition de "�"), etc...

Merci d'avance à ceux qui arriveront à éclairer ma lanterne ! :wink:
 
WRInaute impliqué
e-kiwi a dit:
nous, étant donné que tous les flux qu'on reçoit ou que l'on doit envoyer sont en utf-8, on est passé en utf-8 :)
L'encodage UTF 8 supprime les codes bizarre ? Parce que MAgpie ne résout pas le problème !
 
WRInaute passionné
il n'y a pas d'encodage mauvais. UTF8 permet d'afficher d'avantage de caractères et est donc préférable pour les sites multi-langue. Pour un site français l'ISO-8859-1 suffit largement. La seule chose est qu'il faut en choisir un et s'y tenir. Il faut aussi indiqué dans le <head> de la page l'encodage choisi :
Code:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 
WRInaute accro
Chacun des encodages ISO 8859-* permet de coder jusqu'à 256 caractères différents (un peu moins en fait), et est adapté aux caractères utilisés dans diverses régions. L'ISO 8859-1 est donc adapté pour la plupart des langues d'Europe de l'Ouest, en particulier la France. Mais si tu devais avoir des textes en polonais par exemple, il te faudrait utiliser un autre encodage, donc il faudrait ajouter cette information en base ou ailleurs pour savoir quel est l'encodage utilisé pour tel ou tel texte.

UTF-8 permet de coder 4 milliards de caratères différents. Il permet donc d'avoir accès à tous les caractères normalisés (il y en a des milliers). Ca permet donc sans problème d'avoir du texte en français, mais aussi en polonais, en russe, en chinois, en japonais, en arabe, et j'en passe.

Donc UTF-8 est "mieux" que les encodages ISO 8859, puisqu'il est universel, et qu'il peut à lui tout seul. Il a le léger inconvénient que les caractères accentués vont généralement prendre 2 octets au lieu d'un, mais c'est un problème minime.

Maintenant, ce n'est pas parce que tu dis que ta page est encodée avec l'un ou avec l'autre (dans le charset du Content-Type) que ça suffit: il faut évidemment que le contenu de ta page soit effectivement dans l'encodage correspondant, ce qui signifie que les pages/sources doivent être sauvegardés avec le bon encodage, les données en BDD stockées avec le bon encodage, les données reprises d'autres sources (flux RSS, XML, etc.) itou. Tout ce qui est dans un autre encodage devra alors être converti avec les fonctions qui vont bien.

Mon conseil perso c'est de tout passer en UTF-8 dès que possible.

Jacques.
 
WRInaute accro
KOogar a dit:
c'est pas trés parlant l'UTF-8 (é)

Ben si tu l'interprètes comme de l'ISO, c'est sûr. De la même façon si tu essaies d'interpréter de l'ISO comme de l'UTF-8, ça marche pas terrible non plus. Normal, quoi.

Jacques.
 
WRInaute impliqué
KOogar a dit:
je voulais pas dire utf-8 contre ISO. Je prefere ISO c'est tout

Bonjour KOogar, donc ton avis pour la gestion de la BDD et appels PHP, il serait plus judicieux de partir sur de l'ISO plutôt que de l'UTF-8 ?

Est-ce une question de place ?
 
WRInaute accro
oui, utf-8 prend lègerement plus d'espace, ensuite c'est difficile de gerer des chaines en utf-8 car chaque caractere a un nombre de caractere different, alors qu'en iso c'est du 1 pour 1. php a introduit des focntions comme utf8_encode cela fait pas si longtemeps, tous les langages de prog ont du mal a gerer lutf8, j'attend peut-etre encore des fonctions comme utf8_strlen() pour me lancer a corps perdu dans cette norme, d'un autre coté tout ce que dit Jacques tiens la route et faire tout en utf8 est plutot recommandéde nos jours, sauf peut-etre pour les webmasters comme moi qui ont des Go de bdd deja formaté en iso
 
WRInaute discret
Merci beaucoup à tous pour vos réponses !

Donc si j'ai bien compris, en gros c'est égal, mais pour un site uniquement en français, l'iso est un peu plus simple...

Mes pages sont en .php, je n'utilise pas de base de donnée et lorsque j'utilise UFT-8, j'ai des problèmes avec les lettres accentuées (d'où l'obligation de toutes les coder - &eacute; par ex)...

Du coup, je pense que le mieux serait encore que je repasse en ISO au lieu de me casser la tête avec des codes de caractères accentués.

Dernière question : est-ce que ces caractères accentués risquent de s'afficher différemment selon les paramètres du visiteur (navigateur, etc) ?
 
WRInaute accro
Dushan a dit:
Dernière question : est-ce que ces caractères accentués risquent de s'afficher différemment selon les paramètres du visiteur (navigateur, etc) ?
non, si tu codes correctement tes pages : un header et une meta content-type qui doivent renvoyer toutes les 2 le même codage, qui plus est, il doit correspondre avec le codage du texte ou du script. Si tu as ton texte directement dans tes scripts, ne pas oublier de sauvegarder ton document au bon encodage (notepad+ permet de sauvegarder dans différents encodages)
 
WRInaute discret
Leonick a dit:
non, si tu codes correctement tes pages : un header et une meta content-type qui doivent renvoyer toutes les 2 le même codage, qui plus est, il doit correspondre avec le codage du texte ou du script. Si tu as ton texte directement dans tes scripts, ne pas oublier de sauvegarder ton document au bon encodage (notepad+ permet de sauvegarder dans différents encodages)
Ok... Donc si je mets

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

et

Code:
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />

Alors théoriquement, ça devrait être bon, right ?
 
WRInaute accro
Dushan a dit:
Alors théoriquement, ça devrait être bon, right ?
si ta page a été sauvegardée en iso.
Mais quand je parlais de header, c'était ceux envoyés par le serveur
Code:
header("Content-Type: application/xhtml+xml; charset=ISO-8859-1");
 
WRInaute discret
Ok... Donc si je mets

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
et
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />

Alors théoriquement, ça devrait être bon, right ?
Si on souhaite utiliser le mode quirks, car le prologue xml mettra ie6 en mode quirks et le doctype ci-dessus est incomplet pour mettre les autres navigateurs en mode standards compliance mode.
http://hsivonen.iki.fi/doctype/
La balise meta doit suffire si le fichier a été sauvegardé en iso.
IE6 n'accepte pas application/xhtml+xml;
http://www.alsacreations.com/astuce/lire/41-comment-bien-dclarer-du-xh ... tml11.html
 
WRInaute passionné
Dushan a dit:
Mes pages sont en .php, je n'utilise pas de base de donnée et lorsque j'utilise UFT-8, j'ai des problèmes avec les lettres accentuées (d'où l'obligation de toutes les coder - &eacute; par ex)...

Pour la compatibilité il est de toute façon préférable d'avoir des entité HTML (donc &eacute; plutôt que é). Ensuite je ne sais pas ce que tu utilies pour coder, mais il faut aussi que l'encodage de ton fichier php soit le même que celui de ton site (genre si tu codes dans un fichier encodé en ISO et que tu fais un echo "été"; le é de ton fichier est en iso, donc si tu as une page UTF-8 ça va forcément poser problème.

L'encodage se change facilement sous notepadd++, eclipse, ...
 
WRInaute discret
Bacteries a dit:
L'encodage se change facilement sous notepadd++, eclipse, ...
Bonjour,

Tu es le deuxième à mentionner notepad++. En fait c'est le programme que j'utilise, mais si j'ai trouvé facilement comment modifier le format d'enregistrement, je n'ai pas trouvé où choisir l'encodage... Peux-tu m'indiquer où l'option se trouve ?

Merci beaucoup d'avance !

Dushan
 
WRInaute passionné
IIS ou Apache ce n'est pas eux qui "créé" le Header... Il faut chercher du coté du langage qui génère tes pages (ASP, PHP, ...).
Sauf quelques options qui force l'encodage mais tu ne semble pas parler de ça.
 
WRInaute discret
Bacteries a dit:
IIS ou Apache ce n'est pas eux qui "créé" le Header... Il faut chercher du coté du langage qui génère tes pages (ASP, PHP, ...).
Sauf quelques options qui force l'encodage mais tu ne semble pas parler de ça.


C'est un CMS avec de l'ASP.NET.. Tu crois qu'il faut gérer ca à partir du CMS alors?
 
Discussions similaires
Haut