{"id":339,"date":"2009-03-30T17:50:07","date_gmt":"2009-03-30T16:50:07","guid":{"rendered":"http:\/\/flaven.fr\/?p=339"},"modified":"2009-03-30T17:50:07","modified_gmt":"2009-03-30T16:50:07","slug":"charset-iso-8859-1-iso-8859-15-utf-8-le-probleme-de-charset","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2009\/03\/charset-iso-8859-1-iso-8859-15-utf-8-le-probleme-de-charset\/","title":{"rendered":"Charset iso-8859-1, iso-8859-15, utf-8, le probl\u00e8me du Charset"},"content":{"rendered":"<p><!--  Charset iso-8859-1, iso-8859-15, utf-8, le probl\u00e8me du Charset   --><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/03\/utf8_iso_issue_s.jpg\" alt=\" Charset iso-8859-1, iso-8859-15, utf-8, le probl\u00e8me de Charset \" width=\"150\" height=\"100\" \/>Si il y a bien un probl\u00e8me qui peut virer au casse-t\u00eate chinois, c\u2019est bien celui de l\u2019encodage de caract\u00e8re dans un fichier, une page web ou tout document que vous diffusez et qui se r\u00e9v\u00e8le truff\u00e9 d\u2019erreurs d&#8217;encodage.<!--more--><\/p>\n<h2>Arr\u00eate ton Charset en dur&#8230;<\/h2>\n<p>Comment diagnostiquer le probl\u00e8me ? Un sympt\u00f4me simple, vous voyez appara\u00eetre des signes cabalistiques dans vos pages html par exemple. Je vous livre in extenso le diagnostic de http:\/\/electron-libre.fassnet.net\/utf8.php qui d\u00e9taille bri\u00e8vement les moyens de d\u00e9terminer le bourbier num\u00e9rique dans lequel vous venez de sauter \u00e0 touches jointes !<\/p>\n<p>Il donne les sympt\u00f4mes  et les soins simples de premi\u00e8re urgence.<\/p>\n<h4>Reconnaissance rapide des probl\u00e8mes d&#8217;affichage UTF-8 ISO<\/h4>\n<blockquote>\n<p><b>Cas N&deg;1<\/b><\/p>\n<p>Si la page affiche des caract\u00e8res de ce type : &#8220;\u00c3\u00a9&#8221;, &#8220;\u00c3\u00ae&#8221;, &#8220;\u00c3&#8221;, &#8230;<br \/>\n=&gt; Les donn\u00e9es ont \u00e9t\u00e9 enregistr\u00e9es au format UTF-8, et le navigateur les affiche en pensant avoir affaire \u00e0 de l&#8217;ISO.<\/p>\n<p><b>Cas N&deg;2<\/b><br \/>\nSi la page affiche des caract\u00e8res de ce type : &#8220;\ufffd&#8221;<br \/>\n=&gt; Les donn\u00e9es ont \u00e9t\u00e9 enregistr\u00e9es au format ISO, et le navigateur les affiche en pensant avoir affaire \u00e0 de l&#8217;UTF-8.<\/p>\n<p>Si les donn\u00e9es sont cod\u00e9es en dur dans la page, voir l&#8217;encodage de l&#8217;\u00e9diteur de texte, le header apache et la balise meta &#8220;charset&#8221;.<br \/>\nSi les donn\u00e9es proviennent de la base, v\u00e9rifier le format de stockage et les m\u00e9thodes de lecture et d&#8217;insertion (SET NAMES et charset).<br \/>\nSi les donn\u00e9es proviennent de l&#8217;ext\u00e9rieur (web services, rss, &#8230;), penser \u00e0 convertir les cha\u00eenes de caract\u00e8re (utf8_encode-decode et fonctions du module iconv).<\/p>\n<p><a href=\"http:\/\/electron-libre.fassnet.net\/utf8.php\" target=\"_blank\">http:\/\/electron-libre.fassnet.net\/utf8.php<\/a><\/p>\n<\/blockquote>\n<h2>Le mal est d\u00e9j\u00e0 fait&#8230; Que puis-je faire ?<\/h2>\n<p>Il arrive notamment dans le cas d&#8217;une BDD que la corruption ait eu lieu. Vous vous retrouvez par exemple avec une BDD cod\u00e9 \u00e0 l&#8217;origine en utf-8 mais dont l&#8217;unique sauvegarde que vous poss\u00e9dez est un &#8220;dump&#8221; (un fichier .sql) fait et ouvert sur une machine en iso-8859-1, un windows par exemple.<\/p>\n<h4>Le cas de la BDD corrompue<\/h4>\n<p>Si vous popularisez \u00e0 nouveau ce &#8220;dump&#8221; (.sql) dans votre BDD et que vos pages continuent de se charger en UTF-8, vous \u00eates alors dans le <b>Cas N&deg;2<\/b> d\u00e9crit plus haut.<\/p>\n<p>Si vous d\u00e9cidez de caut\u00e9riser le probl\u00e8me directement dans le client MySQL via le client SSH, dans putty par exemple, n&#8217;oubliez de changer les sp\u00e9cifications de &#8220;translation&#8221; en s\u00e9lectionnant UTF-8 afin de taper vos requ\u00eates SQl en utf-8. Vous pourrez alors pass\u00e9 all\u00e8grement  des requ\u00eates, voir m\u00eame des copier-coller, depuis votre poste ISO sur le serveur en UTF-8.<\/p>\n<p><b>Changer les propri\u00e9t\u00e9s de traduction dans Putty<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/03\/iso_vs_utf8_putty_translation.jpg\" width=\"455\" height=\"526\" class=\"size-full wp-image-47 aligncenter\"><\/p>\n<p>\nPour t\u00e9l\u00e9charger Putty, vous pouvez vous rendre \u00e0 cette adresse<br \/>\n<a href=\"http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/download.html\">http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/download.<\/a><\/p>\n<h4>Le cas de XML pour flash<\/h4>\n<p>Un cas qui est rarement \u00e9voqu\u00e9, c&#8217;est le xml charg\u00e9 dans flash, bien qu&#8217;il s&#8217;agisse rigoureusement de probl\u00e8mes similaires.<\/p>\n<p>Pour \u00e9viter parfois des probl\u00e8mes \u00e0 r\u00e9p\u00e9tition, vous pouvez vous rabattre sur l&#8217;encodage hexad\u00e9cimal des caract\u00e8res accentu\u00e9s&#8230; ainsi donc de cr\u00e9er des xml  pour vos applications flash sans erreur&#8230;<\/p>\n<pre lang=\"xml\" escaped=\"true\">\n\u00e7 s'\u00e9crit &#231;\n\u00e8 s'\u00e9crit &#232;\n\u00e9 s'\u00e9crit &#233;\n\u00ea s'\u00e9crit &#234;\n<\/pre>\n<p>Le plus sur quelque soit le &#8220;charset&#8221; que vous d\u00e9finissez c&#8217;est de remplacer les caract\u00e8res accentu\u00e9s par leurs \u00e9quivalents hexad\u00e9cimaux.<\/p>\n<pre lang=\"xml\" escaped=\"true\">\n\t&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n\t&lt;commitments&gt;\n\t&lt;mantra id=&quot;one&quot;&gt;Cette \u00e9t\u00e9 je pars pour apprendre le fran\u00e7ais \u00e0 Paris&lt;\/mantra&gt;\n\t&lt;mantra id=&quot;two&quot;&gt;Les accents ont \u00e9t\u00e9 mon pire cauchemar&lt;\/mantra&gt;\t\n\t&lt;\/commitments&gt;\n\t\n<\/pre>\n<pre lang=\"xml\" escaped=\"true\">\n\t&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n\t&lt;commitments&gt;\n\t&lt;mantra id=&quot;one&quot;&gt;Cette &#233;t&#233; je pars pour apprendre le fran&#231;ais  &#229; Paris&lt;\/mantra&gt;\n\t&lt;mantra id=&quot;two&quot;&gt;Les accents ont &#233;t&#233; mon pire cauchemar&lt;\/mantra&gt;\t\n\t&lt;\/commitments&gt;\n\t\n<\/pre>\n<p>Il existe des outils de traduction en ligne qui vous donneront les \u00e9quivalents.<br \/>\n<a href=\"http:\/\/rishida.net\/scripts\/uniview\/conversion.php\" target=\"_blank\">http:\/\/rishida.net\/scripts\/uniview\/conversion.php<\/a><br \/>\n<br \/>\nEnfin, vous pouvez toujours vous r\u00e9f\u00e9rer \u00e0 la sainte bible du charset.<br \/>\n<a href=\"http:\/\/www.w3.org\/International\/O-charset.fr.php\" target=\"_blank\">http:\/\/www.w3.org\/International\/O-charset.fr.php<\/a><\/p>\n<h4>Le doctype<\/h4>\n<p>Disons que pour r\u00e9sumer, le dilemme se pose dans le choix du doctype entre <strong>&#8220;transitional&#8221;<\/strong> et <strong>&#8220;strict&#8221;<\/strong>. Il est certain que si vous choisissez de publier avec un doctype strict, l\u2019obtention de la validation par le validator W3C  va se montre plus d\u00e9licat.<br \/>\nN\u00e9anmoins, cela n&#8217;est pas impossible que vous puissiez valider ainsi vous pourrez affubler vos pages du logo qui atteste de la validit\u00e9 de vos pages.<\/p>\n<p><strong>La d\u00e9claration d&#8217;un doctype n&#8217;est requise que pour la validation.<\/strong><\/p>\n<p><strong>Le doctype Transitional<\/strong><\/p>\n<pre lang=\"html\" escaped=\"true\">\n\t&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0\n\tTransitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\"&gt;\n<\/pre>\n<p><strong>Le doctype strict<\/strong><\/p>\n<pre lang=\"html\" escaped=\"true\">\n\t&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0\n\tTransitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-strict.dtd\"&gt;\n<\/pre>\n<p><strong>Les ic\u00f4nes W3C<\/strong><\/p>\n<p>\n  <a href=\"http:\/\/validator.w3.org\/check?uri=referer\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.w3.org\/Icons\/valid-xhtml10\" alt=\"Valid XHTML 1.0 Transitional\" height=\"31\" width=\"88\" \/><\/a>\n<\/p>\n<p>\n  <a href=\"http:\/\/validator.w3.org\/check?uri=referer\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.w3.org\/Icons\/valid-xhtml10-blue\" alt=\"Valid XHTML 1.0 Transitional\" height=\"31\" width=\"88\" \/><\/a>\n<\/p>\n<p>\nSi vous souhaitez faire de l\u2019\u00e9vang\u00e9lisation, vous pouvez aussi toujours ajouter ce petit logo&#8230;<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/03\/I_heart_validator_lg.png\" alt=\"Charset iso-8859-1, iso-8859-15, utf-8, le probl\u00e8me de Charset \" width=\"101\" height=\"46\" \/><\/p>\n<p><strong>Le  &#8220;W3C Markup Validation Service&#8221;<\/strong><br \/>\n<a href=\"http:\/\/validator.w3.org\/\" target=\"_blank\">http:\/\/validator.w3.org\/<\/a><\/p>\n<h4>L&#8217;en-t\u00eate \u00e0 l&#8217;emploi<\/h4>\n<p>C&#8217;est la balise meta qui va indiquer au navigateur comment interpr\u00e8ter un document web.<\/p>\n<p><strong>L&#8217;en-t\u00eate UTF-8<\/strong><\/p>\n<pre lang=\"html\" escaped=\"true\">\n&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"\/&gt;\n<\/pre>\n<p><strong>L&#8217;en-t\u00eate iso-8859-1<\/strong><\/p>\n<pre lang=\"html\" escaped=\"true\">\n&lt;http-equiv=\"Content-Type\" content=\"text\/html; charset=iso-8859-1\"\/&gt;\n<\/pre>\n<h4>Le tableau des \u00e9quivalences<\/h4>\n<p>Le tableau de toutes les \u00e9quivalences pour le chartset ISO 8859-1 Character Set ( Latin &#8211; 1) &#8211; Western \/ West European<\/p>\n<p><a href=\"http:\/\/www.tableascii.com\/iso88591.htm\" target=\"_blank\">http:\/\/www.tableascii.com\/iso88591.htm<\/a><\/p>\n<h2>Pour aller plus loin<\/h2>\n<p>\tLes r\u00e8gles simples pour passer son site de iso \u00e0 utf-8<\/p>\n<ul>\n<li><a href=\"http:\/\/www.aquatz.com\/Encodage-convertir-un-site-en-UTF8-PHP-MySQL_a36.html\" target=\"_blank\">http:\/\/www.aquatz.com\/Encodage-convertir-un-site-en-UTF8-PHP-MySQL_a36.html<\/a>\n\t\t<\/li>\n<\/ul>\n<p>Un r\u00e9capitulatif bien fait sur la d\u00e9claration et les en-t\u00eates<\/p>\n<ul>\n<li><a href=\"http:\/\/www.pompage.net\/pompe\/doctypecontenttype\/\" target=\"_blank\">http:\/\/www.pompage.net\/pompe\/doctypecontenttype\/<\/a>\n\t\t<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Si il y a bien un probl\u00e8me qui peut virer au casse-t\u00eate chinois, c\u2019est bien celui de l\u2019encodage de caract\u00e8re dans un fichier, une page&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2009\/03\/charset-iso-8859-1-iso-8859-15-utf-8-le-probleme-de-charset\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Charset iso-8859-1, iso-8859-15, utf-8, le probl\u00e8me du Charset<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9587,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Le charset iso-8859-1, iso-8859-15, utf-8 pose des probl\u00e8mes d'encodage. Utilisez des outils pour diagnostiquer et corriger les erreurs d'affichage.","bf_ai_og_title":"Charset: Probl\u00e8mes et Solutions","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3451,3435],"tags":[121,122],"class_list":["post-339","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-design-front-end","category-web-development","tag-iso","tag-utf-8"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-5t","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/03\/utf8_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=339"}],"version-history":[{"count":0,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/339\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9587"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}