{"id":233072,"date":"2023-02-02T19:53:00","date_gmt":"2023-02-02T16:53:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233072"},"modified":"2022-11-10T19:17:11","modified_gmt":"2022-11-10T16:17:11","slug":"comment-convertir-gb2312-ou-dautres-caracteres-non-ansi-en-codage-utf-8-mysql-et-files-charset","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-convertir-gb2312-ou-dautres-caracteres-non-ansi-en-codage-utf-8-mysql-et-files-charset\/","title":{"rendered":"Comment convertir GB2312 (ou d&rsquo;autres caract\u00e8res non ANSI) en codage UTF-8 (MySQL et Files Charset)"},"content":{"rendered":"\n<p>Mon premier site web <a href=\"https:\/\/steakovercooked.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">steakovercooked.com<\/a> a commenc\u00e9 en 2006 (il y a 9 ans). Et \u00e0 cette \u00e9poque, je ne connaissais pas grand-chose \u00e0 l&rsquo;encodage de fichiers\/jeu de caract\u00e8res et aussi, l&rsquo;UTF-8 n&rsquo;\u00e9tait pas si populaire pour les pages Web \u00e0 cette \u00e9poque. De nos jours, UTF-8 devient si populaire, c&rsquo;est-\u00e0-dire que WordPress utilise l&rsquo;encodage UTF-8 sur tout le site afin que vous puissiez afficher pratiquement n&rsquo;importe quelle langue sur un site sans probl\u00e8me.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e5574685d46.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e5574685d46.jpg\" alt=\"Comment convertir GB2312 (ou d&#039;autres caract\u00e8res non ANSI) en codage UTF-8 (MySQL et Files Charset)\" ><\/a><\/p>\n<p>UTF-8-ascii-iso-8859-1<\/p>\n<p>La page de code de tous les fichiers (PHP, HTML, CSS et quelques autres fichiers en texte brut) \u00e9tait principalement sur des pages de code ANSI et les caract\u00e8res chinois sont cod\u00e9s sur plusieurs octets. Afin d&rsquo;afficher ces caract\u00e8res (en codage ANSI) dans le navigateur, vous devez les mettre entre la balise d&rsquo;en-t\u00eate en HTML afin que les navigateurs puissent comprendre\u00a0:<\/p>\n<pre><code>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=gb2312\"&gt;<\/code><\/pre>\n<p>En HTML5, vous pouvez \u00e9crire dans une m\u00e9thode beaucoup plus courte\u00a0:<\/p>\n<pre><code>&lt;meta charset=\"gb2312\"&gt;<\/code><\/pre>\n<p>Ainsi, la plupart des locuteurs non chinois ne peuvent pas voir les caract\u00e8res \u00e0 moins d&rsquo;installer le package de langue GB2312 pour le navigateur. En outre, il est probable que certains \u00e9diteurs de texte courants se trompent avec les caract\u00e8res. Un seul caract\u00e8re en chinois correspond \u00e0 deux octets, mais parfois l&rsquo;\u00e9diteur de texte le coupe simplement en deux.<\/p>\n<h3>Convertir des fichiers (ANSI) en UTF-8<\/h3>\n<p>Avant de changer le m\u00e9ta-en-t\u00eate en\u00a0:<\/p>\n<pre><code>&lt;meta charset=\"utf-8\"&gt;<\/code><\/pre>\n<p>Vous devrez convertir les fichiers en codage UTF-8. Il existe de nombreuses fa\u00e7ons de le faire. La m\u00e9thode la plus simple serait d&rsquo;utiliser le bloc-notes pour enregistrer en tant que codage &lsquo;UTF-8&rsquo;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55747b5a84.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55747b5a84.jpg\" alt=\"Comment convertir GB2312 (ou d&#039;autres caract\u00e8res non ANSI) en codage UTF-8 (MySQL et Files Charset)\" ><\/a><\/p>\n<p>bloc-notes-convertir-en-utf-8<\/p>\n<p>Si vous avez beaucoup de fichiers, vous pouvez le faire en utilisant l&rsquo;utilitaire <strong>iconv<\/strong> sous Linux (<a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">serveur VPS<\/a> ). Le script suivant (enregistr\u00e9 sous le nom de fichier, par exemple toUTF) convertira un seul fichier en UTF-8.<\/p>\n<pre><code>#!\/bin\/bash\n# https:\/\/helloacm.com\n\u00a0\nif [ \"$#\" -ne 1 ] ||! [ -r \"$1\" ]; then\n\u00a0 \u00a0 echo \"Usage: $0 file1\"\n\u00a0 \u00a0 exit 1\nfi\n\u00a0\nx=`file -bi $1 | grep 'utf' | wc -l`\nif [ $x -eq 1 ]; then\n\u00a0 echo \"$1 already converted\"\nelse\n\u00a0 echo converting $1 to UTF8\n\u00a0 iconv -f \"gb2312\" -t \"UTF-8\" $1 -o $1\nfi<\/code><\/pre>\n<p>Nous devons \u00e9viter de convertir deux fois pour \u00e9viter d&rsquo;\u00e9ventuels probl\u00e8mes. Le <strong><code>file -bi $1 | grep 'utf' | wc -l<\/code><\/strong>v\u00e9rifiera si le fichier a d\u00e9j\u00e0 \u00e9t\u00e9 encod\u00e9 en UTF-8. La commande <strong>iconv -f &quot;gb2312&quot; -t &quot;UTF-8&quot; $1 -o $1<\/strong> convertira le fichier en UTF-8 \u00e0 partir de gb2132 (modifiez-le en cons\u00e9quence).<\/p>\n<p>Maintenant, nous pouvons boucler tous les fichiers avec des extensions de fichier *.php dans le r\u00e9pertoire courant et tous les sous-r\u00e9pertoires\u00a0:<\/p>\n<pre><code>for x in `find. -type f -name \"*.php\"`; do\n   toUTF $x\ndone    <\/code><\/pre>\n<h3>Convertir la base de donn\u00e9es MySQL en UTF-8<\/h3>\n<p>Dans mon cas, toutes mes bases de donn\u00e9es mysql pr\u00e9c\u00e9dentes sont d\u00e9finies par d\u00e9faut sur l&rsquo;encodage ANSI (collation <strong>latin1_swedish_ci<\/strong> ), elles sont corrompues dans les navigateurs modernes s&rsquo;il y a des caract\u00e8res GB2312 (multi-octets). Par exemple, PhpMyAdmin a un encodage UTF-8 et les caract\u00e8res ANSI\/GB2312 seront affich\u00e9s corrompus dans le navigateur.<\/p>\n<p>Afin de sauvegarder ces donn\u00e9es en UTF-8, la m\u00e9thode la plus simple est d&rsquo;exporter la table (phpMyAdmin recommand\u00e9) vers un fichier SQL ; assurez-vous de l&rsquo;exporter en utilisant <strong>iso 8859-1<\/strong> (couverture compl\u00e8te de l&rsquo;anglais). <strong>iso 8859-1<\/strong> est \u00e9galement appel\u00e9 ANSI mais les caract\u00e8res GB2312 peuvent \u00eatre stock\u00e9s sous forme de cha\u00eene multi-octets. Si vous ouvrez le SQL dans le bloc-notes, vous pouvez toujours voir les caract\u00e8res chinois, il vous suffit d&rsquo;enregistrer en tant que codage &lsquo;UTF-8&rsquo;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55748eff91.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-155185-61e55748eff91.jpg\" alt=\"Comment convertir GB2312 (ou d&#039;autres caract\u00e8res non ANSI) en codage UTF-8 (MySQL et Files Charset)\" ><\/a><\/p>\n<p>phpmyadmin<\/p>\n<p>Oh, encore une chose avant de sauvegarder en UTF-8. Vous devez rechercher et remplacer le mot &quot;latin1&quot; par &quot;utf-8&quot; dans le fichier SQL. Ensuite, r\u00e9importez le SQL \u00e0 l&rsquo;aide de phpMyAdmin pour que vous soyez pr\u00eat \u00e0 partir. Toutes les donn\u00e9es seront conserv\u00e9es et modifi\u00e9es en codage UTF-8 et le classement sera modifi\u00e9 (pour varchar, text, longtext, etc.) en <strong>utf8_general_ci<\/strong>.<\/p>\n<h3>Param\u00e8tres MySQL UTF-8<\/h3>\n<p>En PHP, vous pouvez d\u00e9finir le jeu de caract\u00e8res par d\u00e9faut\u00a0:<\/p>\n<pre><code>\u00a0 mysql_query(\"SET NAMES 'utf8'\");\n\u00a0 mysql_query(\"SET CHARACTER SET utf8\");<\/code><\/pre>\n<p>Le <strong>mysql_set_charset<\/strong> fait de m\u00eame\u00a0:<\/p>\n<pre><code>if (!function_exists('mysql_set_charset')) {\n\u00a0 function mysql_set_charset($charset, $dbh)\n\u00a0 {\n\u00a0 \u00a0 return mysql_query(\"set names $charset\", $dbh);\n\u00a0 }\n}\n\/\/ mysql_set_charset \u2014 Sets the client character set\nmysql_set_charset(\"utf-8\", $link); \/\/(PHP 5 &gt;= 5.2.3) <\/code><\/pre>\n<p>Vous pouvez \u00e9galement d\u00e9finir le jeu de caract\u00e8res par d\u00e9faut au d\u00e9marrage du serveur MySQL (\u00e9conomiser les frais g\u00e9n\u00e9raux de fonction pour appeler les fonctions ci-dessus). Allez \u00e9diter le fichier <strong>\/etc\/mysql\/my.cnf<\/strong> et red\u00e9marrez le serveur mysql par exemple <strong>sudo service mysql restart<\/strong>. Ajoutez ce qui suit \u00e0 <strong>my.cnf<\/strong> :<\/p>\n<pre><code>[client]\ndefault-character-set=utf8\n\n[mysql]\ndefault-character-set=utf8\n\n[mysqld]\ncollation-server = utf8_unicode_ci\ninit-connect='SET NAMES utf8'\ncharacter-set-server = utf8<\/code><\/pre>\n<h3>Pourquoi UTF-8 ?<\/h3>\n<p>L&rsquo;UTF-8 traite les lettres alphab\u00e9tiques sur 1 octet (identique \u00e0 ANSI) mais utilise 3 octets pour repr\u00e9senter 1 caract\u00e8re chinois tandis que 2 octets sont utilis\u00e9s s&rsquo;ils sont encod\u00e9s par GB2312. Par cons\u00e9quent, si vos pages contiennent beaucoup de caract\u00e8res chinois, ANSI\/GB2312 \u00e9conomise de l&rsquo;espace, cependant, UTF-8 et ANSI consomment exactement le m\u00eame espace lorsqu&rsquo;il s&rsquo;agit de lettres anglaises uniquement.<\/p>\n<p>L&rsquo;UTF-8 vous \u00e9vite des probl\u00e8mes \u00e0 l&rsquo;avenir. Une fois converti en UTF-8, vous n&rsquo;avez plus \u00e0 vous soucier du jeu de caract\u00e8res ou de l&rsquo;encodage. UTF-8 est plus convivial pour les caract\u00e8res internationaux que la plupart des navigateurs savent afficher correctement le texte. Dans mon cas, je dois convertir les fichiers en UTF-8 encod\u00e9s car mes \u00e9diteurs de texte pr\u00e9f\u00e9r\u00e9s, \u00e0 la fois PsPAD et Sublime text, ne savent pas comment afficher correctement ANSI\/GB2312.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment convertir GB2312 (ou d&rsquo;autres caract\u00e8res non ANSI) en codage UTF-8 (MySQL et Files Charset)<\/p>\n","protected":false},"author":1,"featured_media":224526,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,717,832,748,841,862],"tags":[1167],"class_list":["post-233072","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-open-source-projektmanagement-2","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/233072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=233072"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/233072\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=233072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=233072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=233072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}