Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment convertir GB2312 (ou d’autres caractères non ANSI) en codage UTF-8 (MySQL et Files Charset)

10

Mon premier site web steakovercooked.com a commencé en 2006 (il y a 9 ans). Et à cette époque, je ne connaissais pas grand-chose à l’encodage de fichiers/jeu de caractères et aussi, l’UTF-8 n’était pas si populaire pour les pages Web à cette époque. De nos jours, UTF-8 devient si populaire, c’est-à-dire que WordPress utilise l’encodage UTF-8 sur tout le site afin que vous puissiez afficher pratiquement n’importe quelle langue sur un site sans problème.

Comment convertir GB2312 (ou d'autres caractères non ANSI) en codage UTF-8 (MySQL et Files Charset)

UTF-8-ascii-iso-8859-1

La page de code de tous les fichiers (PHP, HTML, CSS et quelques autres fichiers en texte brut) était principalement sur des pages de code ANSI et les caractères chinois sont codés sur plusieurs octets. Afin d’afficher ces caractères (en codage ANSI) dans le navigateur, vous devez les mettre entre la balise d’en-tête en HTML afin que les navigateurs puissent comprendre :

En HTML5, vous pouvez écrire dans une méthode beaucoup plus courte :

Ainsi, la plupart des locuteurs non chinois ne peuvent pas voir les caractères à moins d’installer le package de langue GB2312 pour le navigateur. En outre, il est probable que certains éditeurs de texte courants se trompent avec les caractères. Un seul caractère en chinois correspond à deux octets, mais parfois l’éditeur de texte le coupe simplement en deux.

Convertir des fichiers (ANSI) en UTF-8

Avant de changer le méta-en-tête en :

Vous devrez convertir les fichiers en codage UTF-8. Il existe de nombreuses façons de le faire. La méthode la plus simple serait d’utiliser le bloc-notes pour enregistrer en tant que codage ‘UTF-8’.

Comment convertir GB2312 (ou d'autres caractères non ANSI) en codage UTF-8 (MySQL et Files Charset)

bloc-notes-convertir-en-utf-8

Si vous avez beaucoup de fichiers, vous pouvez le faire en utilisant l’utilitaire iconv sous Linux (serveur VPS ). Le script suivant (enregistré sous le nom de fichier, par exemple toUTF) convertira un seul fichier en UTF-8.

#!/bin/bash # https://helloacm.com   if [ "$#" -ne 1 ] ||! [ -r "$1" ]; then     echo "Usage: $0 file1"     exit 1 fi   x=`file -bi $1 | grep 'utf' | wc -l` if [ $x -eq 1 ]; then   echo "$1 already converted" else   echo converting $1 to UTF8   iconv -f "gb2312" -t "UTF-8" $1 -o $1 fi

Nous devons éviter de convertir deux fois pour éviter d’éventuels problèmes. Le file -bi $1 | grep 'utf' | wc -lvérifiera si le fichier a déjà été encodé en UTF-8. La commande iconv -f "gb2312" -t "UTF-8" $1 -o $1 convertira le fichier en UTF-8 à partir de gb2132 (modifiez-le en conséquence).

Maintenant, nous pouvons boucler tous les fichiers avec des extensions de fichier *.php dans le répertoire courant et tous les sous-répertoires :

for x in `find. -type f -name "*.php"`; do toUTF $x done

Convertir la base de données MySQL en UTF-8

Dans mon cas, toutes mes bases de données mysql précédentes sont définies par défaut sur l’encodage ANSI (collation latin1_swedish_ci ), elles sont corrompues dans les navigateurs modernes s’il y a des caractères GB2312 (multi-octets). Par exemple, PhpMyAdmin a un encodage UTF-8 et les caractères ANSI/GB2312 seront affichés corrompus dans le navigateur.

Afin de sauvegarder ces données en UTF-8, la méthode la plus simple est d’exporter la table (phpMyAdmin recommandé) vers un fichier SQL ; assurez-vous de l’exporter en utilisant iso 8859-1 (couverture complète de l’anglais). iso 8859-1 est également appelé ANSI mais les caractères GB2312 peuvent être stockés sous forme de chaîne multi-octets. Si vous ouvrez le SQL dans le bloc-notes, vous pouvez toujours voir les caractères chinois, il vous suffit d’enregistrer en tant que codage ‘UTF-8’.

Comment convertir GB2312 (ou d'autres caractères non ANSI) en codage UTF-8 (MySQL et Files Charset)

phpmyadmin

Oh, encore une chose avant de sauvegarder en UTF-8. Vous devez rechercher et remplacer le mot "latin1" par "utf-8" dans le fichier SQL. Ensuite, réimportez le SQL à l’aide de phpMyAdmin pour que vous soyez prêt à partir. Toutes les données seront conservées et modifiées en codage UTF-8 et le classement sera modifié (pour varchar, text, longtext, etc.) en utf8_general_ci.

Paramètres MySQL UTF-8

En PHP, vous pouvez définir le jeu de caractères par défaut :

  mysql_query("SET NAMES 'utf8'");   mysql_query("SET CHARACTER SET utf8");

Le mysql_set_charset fait de même :

Vous pouvez également définir le jeu de caractères par défaut au démarrage du serveur MySQL (économiser les frais généraux de fonction pour appeler les fonctions ci-dessus). Allez éditer le fichier /etc/mysql/my.cnf et redémarrez le serveur mysql par exemple sudo service mysql restart. Ajoutez ce qui suit à my.cnf :

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8

Pourquoi UTF-8 ?

L’UTF-8 traite les lettres alphabétiques sur 1 octet (identique à ANSI) mais utilise 3 octets pour représenter 1 caractère chinois tandis que 2 octets sont utilisés s’ils sont encodés par GB2312. Par conséquent, si vos pages contiennent beaucoup de caractères chinois, ANSI/GB2312 économise de l’espace, cependant, UTF-8 et ANSI consomment exactement le même espace lorsqu’il s’agit de lettres anglaises uniquement.

L’UTF-8 vous évite des problèmes à l’avenir. Une fois converti en UTF-8, vous n’avez plus à vous soucier du jeu de caractères ou de l’encodage. UTF-8 est plus convivial pour les caractères internationaux que la plupart des navigateurs savent afficher correctement le texte. Dans mon cas, je dois convertir les fichiers en UTF-8 encodés car mes éditeurs de texte préférés, à la fois PsPAD et Sublime text, ne savent pas comment afficher correctement ANSI/GB2312.

Source d’enregistrement: helloacm.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More