{"id":1898,"date":"2018-04-28T11:04:40","date_gmt":"2018-04-28T09:04:40","guid":{"rendered":"https:\/\/blog.kodono.info\/wordpress\/?p=1898"},"modified":"2018-04-28T11:04:40","modified_gmt":"2018-04-28T09:04:40","slug":"interclassement-mysql-pour-le-francais","status":"publish","type":"post","link":"https:\/\/blog.kodono.info\/wordpress\/2018\/04\/28\/interclassement-mysql-pour-le-francais\/","title":{"rendered":"Interclassement MySQL pour le fran\u00e7ais"},"content":{"rendered":"<p>Quel interclassement (dit aussi <em>collation<\/em>) choisir pour sa base MySQL afin d&#8217;y enregistrer des caract\u00e8res fran\u00e7ais (entre autres) ?<\/p>\n<p>L&#8217;interclassement <a href=\"https:\/\/openclassrooms.com\/courses\/comprendre-les-jeux-de-caracteres-et-interclassements\">a deux fonctions<\/a> :<\/p>\n<ol>\n<li>Permettre l&#8217;ordonnancement correct d&#8217;une liste de caract\u00e8res (pour indiquer que le &#8220;\u00e9&#8221; vient apr\u00e8s le &#8220;e&#8221;, ou que les majuscules viennent avant les minuscules, etc)<\/li>\n<li>Permettre de savoir quand un caract\u00e8re est &#8220;\u00e9quivalent&#8221; \u00e0 un autre (dans les requ\u00eates WHERE que, par exemple, le caract\u00e8re &#8220;e&#8221; est \u00e9quivalent \u00e0 &#8220;E&#8221;, &#8220;\u00e9&#8221;, &#8220;\u00e8&#8221; ou &#8220;\u00ea&#8221;)<\/li>\n<\/ol>\n<p>Sur <a href=\"http:\/\/fluxbb.fr\/aide\/doku.php?id=mysql_charset_collation\">fluxbb<\/a> on retrouve une tr\u00e8s bonne explication. Je copie qu&#8217;une partie, mais allez lire cet article vraiment complet :<\/p>\n<blockquote><p>MySQL permet de choisir comment les donn\u00e9es seront class\u00e9es (ORDER BY) par ce qui est appel\u00e9 une \u00ab collation \u00bb (COLLATE). Ceci permet de r\u00e9pondre, par exemple, au probl\u00e8me classique de la sensibilit\u00e9 \u00e0 la casse :<\/p>\n<ul>\n<li>Les majuscules doivent-elles pr\u00e9c\u00e9der les minuscules, ou bien faut-il consid\u00e9rer A et a comme de m\u00eame valeur ?<\/li>\n<li>La sensibilit\u00e9 aux accents : comptent-ils dans le tri ? Font-ils une diff\u00e9rence lors de la recherche ?<\/li>\n<li>La possibilit\u00e9 qu&#8217;un caract\u00e8re (ligature oe) puisse correspondre \u00e0 plusieurs (o suivi de e) : c&#8217;est ce qu&#8217;Unicode appelle \u00ab l&#8217;expansion \u00bb.<\/li>\n<\/ul>\n<p>Toutes les collations ont un nom qui commence par le jeu de caract\u00e8re auquel elles sont li\u00e9es, et se terminent par l&#8217;une de ces trois abr\u00e9viations :<\/p>\n<ul>\n<li><b>_bin<\/b> comme binary : les caract\u00e8res sont dans l&#8217;ordre de leurs num\u00e9ros de code (ce qui donne d&#8217;abord toutes les majuscules, puis toutes les minuscules, puis les lettres accentu\u00e9es, en vrac).<\/li>\n<li><b>_cs<\/b> comme case sensitive : les caract\u00e8res sont tri\u00e9s selon le ou les langages de r\u00e9f\u00e9rence, mais de mani\u00e8re sensible \u00e0 la casse.<\/li>\n<li><b>_ci<\/b> comme case insensitive : idem, mais en ignorant la casse.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Il est possible de d\u00e9finir plusieurs niveaux : de la colonne jusqu&#8217;\u00e0 toute la base de donn\u00e9es. Ainsi on peut d\u00e9finir une collation pour une colonne qui sera diff\u00e9rente de celle de la table.<\/p>\n<p>Au final, on peut utiliser <b>utf8_unicode_ci<\/b> : <b>utf8<\/b> indique qu&#8217;on peut enregistrer une <a href=\"https:\/\/stackoverflow.com\/a\/30074553\/1134119\">large palette<\/a> de caract\u00e8res (on utilisera <b>utf8mb4<\/b> si on souhaite enregistrer des \u00e9moticones en plus), <b>unicode_ci<\/b> va permettre un bon tri tout en ignorant la casse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quel interclassement (dit aussi collation) choisir pour sa base MySQL afin d&#8217;y enregistrer des caract\u00e8res fran\u00e7ais (entre autres) ? L&#8217;interclassement a deux fonctions : Permettre l&#8217;ordonnancement correct d&#8217;une liste de caract\u00e8res (pour indiquer que le &#8220;\u00e9&#8221; vient apr\u00e8s le &#8220;e&#8221;, ou que les majuscules viennent avant les minuscules, etc) Permettre de savoir quand un caract\u00e8re [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"categories":[169],"tags":[172,63],"class_list":["post-1898","post","type-post","status-publish","format-standard","hentry","category-francais","tag-francais","tag-mysql"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=1898"}],"version-history":[{"count":4,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1898\/revisions"}],"predecessor-version":[{"id":1902,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1898\/revisions\/1902"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=1898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/categories?post=1898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/tags?post=1898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}