Résoudre les problèmes d'encodage incorrect des pages Web. Encodage de pages HTML

Définir le jeu de caractères

Balise méta

Vous devez ajouter une balise méta spéciale à chaque page (ou modèle d'en-tête) qui indique au navigateur quel jeu de caractères utiliser pour afficher les textes. Cette balise est standard et ressemble généralement à ceci :

jeu de caractères = UTF-8» />

jeu de caractères = "utf-8"/> (option pour HTML 5)

Vous devez le coller dans la section - mieux au tout début, juste après celui d'ouverture :

Balise de métacodage

Via .htaccess (si tout le reste échoue)

Habituellement, les deux premières options suffisent et les navigateurs affichent le texte comment. Mais certains d’entre eux peuvent avoir des problèmes et vous pouvez donc recourir à l’aide. Fichier .htaccess.

Pour ce faire, vous devez y écrire la ligne suivante :

AddDefaultCharset utf-8

C'est tout. Si vous appliquez séquentiellement ces 3 méthodes de paramétrage de l'encodage sur votre projet, il est probable que que tout sera affiché comme il se doit, proche de 100%.

Comment « voir » ce qui se cache derrière d’étranges symboles sur un site internet ?

Si vous allez sur une page Web, voyez des « mots fous » et souhaitez voir du texte normal, alors il n'y a que deux manières :

  • informer le propriétaire du site afin que tout soit configuré correctement
  • essayez de deviner vous-même l'encodage. C'est fait moyens standards navigateurs. Dans Chrome, par exemple, vous devez cliquer sur le menu "Outils => Encodage" et à partir d'une énorme liste, sélectionnez l'ensemble de caractères approprié (c'est-à-dire devinez).

Heureusement, presque tous les projets Web modernes sont réalisés en codage UTF-8, qui est « universel » pour différents alphabets et il est donc de moins en moins probable de voir ces derniers. symboles étranges sur Internet.

Dans cet article, je vais essayer de mettre des points sur tous les « i » (ainsi que les « i ») lorsqu’il s’agit de choisir l’encodage de la page HTML en cours de création.

Lorsque j’ai commencé à créer des sites Web, j’avais constamment des problèmes avec ces encodages. Vous enregistrez la page HTML, la téléchargez sur le serveur, l'ouvrez, bang, et il y a des conneries. Eh bien, bonjour, nous sommes arrivés.

Ou dans l'environnement de débogage (par exemple, l'environnement de développement local ""), tout va bien, mais depuis l'hébergement encore une fois, ces foutus salauds me regardent effrontément.

Il y avait tellement de souffrance avec les moteurs. Soudain, pour une raison inconnue, les lettres russes natives se transforment en...

Nous allons maintenant traiter de cette question en détail et vous saurez clairement dans quel encodage enregistrer la page HTML ? Et à travers quels instruments.

Pour renforcer notre compréhension mutuelle, définissons le concept codage. Donc, codage est une table de correspondance entre les codes machine et les caractères alphabétiques. Il existe une séquence de caractères machine qui ordinateur intelligent, conformément à la table de codes sélectionnée, remplace par des lettres que nous comprenons.

Dans les années 90 du siècle dernier (quelle antiquité, et je me souviens encore du calendrier de 1991 sur le mur), il y avait 4 encodages pour PC et un de plus, le sien, pour Mac. L'ironie du sort est que dans tous ces codages les caractères latins étaient mis en correspondance codes machines selon le même algorithme, mais concernant l'alphabet cyrillique, chacun des encodages avait sa propre opinion.

Toute cette confusion a conduit à l’apparition des krakozyabrs. Par exemple, si le mot " Question", tapé en encodage Windows-1251, affiché en encodage KOI8-R, vous obtenez le mot " bNOPNYA».

Dieu merci, les années 90 sont déjà loin derrière nous et sur cinq codages délirants, il n'en reste que deux normaux. Mais cela suffit amplement pour qu'un webmaster débutant se perde dans deux pins. C'est bon, ne t'inquiète pas, maintenant je vais te sortir de cette forêt !

Sur ce moment choix pour Encodage de documents HTML se situe entre Windows-1251 et UTF-8. Et maintenant attention : l'utf-8 est beaucoup plus riche, plus puissant et l'avenir lui appartient. Nous allons donc sauvegarder nos fichiers HTML en utf-8.

Je justifierai mes propos ;). UTF-8 contient des caractères tels que ↓. Et dans Windws-1251, au lieu de ces symboles, voici : > . Et en utf-8 il y a un signe « euro » ; utf-8 vous permet également de combiner un tas de différents caractères spécifiques utilisés dans des langues telles que le géorgien, l'hébreu, le chinois et le japonais dans un seul fichier HTML ; et aussi utf-8dans les encodages HTML- c'est une règle de bonnes manières.

J'espère vous avoir convaincu et que vous utiliserez Unicode (d'ailleurs, « utf-8 » et « Unicode » sont des synonymes, ou, pour être plus précis, utf-8 est l'un des encodages de la famille Unicode, qui a gagné en popularité parmi les développeurs Web) .

Examinons maintenant de plus près les outils de transcodage de fichiers que je vous recommande d'utiliser, cher lecteur.

Outils pour travailler avec les encodages de fichiers HTML

En fait, il n'y en a que trois :

  • PS Pad. Éditeur de texte gratuit, mon préféré.
  • . Un autre bon éditeur de texte et également gratuit.
  • Tisseur de rêves. Eh bien, vous connaissez Dreamweaver grâce à mon .

Nous chargeons un fichier HTML dans le PSPad. Et comment pouvons-nous comprendre quel type de codage possède le sujet expérimental chargé ? Très simplement, tout est clairement écrit dans la barre d'état (ci-dessous).

Ouvrir le fichier HTML encodant Windows-1251

Désormais, lors de la création d'un nouveau document HTML, occupons-nous de son encodage.

Allons à mon menu préféré PSPad. Nous sommes intéressés par l'article Format. Dans celui-ci, nous cocherons la case à côté de l'encodage utf-8.

Et donc l'encodage du futur fichier est Windows-1251

Maintenant, comment changer l'encodage du fichier HTML. Oui, cela s'avère très simple :

Vous devez cliquer sur l'encodage requis dans l'élément de menu Format et l'encodage changera. Après cela, enregistrez le fichier, il est recodé, le travail est terminé.

Concernant Bloc-notes++ tout est très similaire à la situation décrite ci-dessus. Uniquement pour travailler avec des encodages, vous devez utiliser l'élément de menu Encodages.

La seule différence est que dans le cas de Notepad++, des éléments de menu apparaissent spécialement conçus pour l'encodage de la conversion. Convertir... (inutile à mon avis, tout est plus simple sur la PSPad et c'est pour ça que je l'utilise). Par conséquent, ce sont ceux sur lesquels vous devez cliquer si vous souhaitez modifier les encodages de notre fichier HTML.

Entre autres choses, lors de la sauvegarde en utf-8, nous avons le choix : sans nomenclature ou avec nomenclature. En tant que webmasters, nous devons utiliser l'encodage UTF-8 (pas de nomenclature).

C’est ce que Wikipédia répondra à la question « qu’est-ce que la nomenclature »

Pour déterminer le format de représentation Unicode dans un fichier texte, une technique est utilisée dans laquelle le caractère U+FEFF (espace insécable de largeur nulle), également appelé Byte Order Mark (BOM), est écrit au début du texte. . Cette méthode fait la différence entre UTF-16LE et UTF-16BE car le caractère U+FFFE n'existe pas. Il est également parfois utilisé pour désigner le format UTF-8, bien que le concept d'ordre des octets ne s'applique pas à ce format.

Si vous lisez le texte ci-dessus 10 fois et vous grattez la tête, cela devient clair : pour la nomenclature utf-8, nous n'avons PAS besoin. De plus, si vous enregistrez un fichier avec un script php dans l'encodage utf-8 avec nomenclature, alors cela ne fonctionnera pas, car le gestionnaire ne comprendra pas quel genre de bêtises est écrite au début du fichier de script (je veux dire cet espace insécable de largeur nulle).

Bon, bon, il ne reste plus qu'à y regarder de plus près Tisseur de rêves.

Lors de la création d'un nouveau fichier, faites attention à l'encodage dans lequel il sera créé. Pour cela, dans la fenêtre de création d'un nouveau document Fichier → Nouveau (Ctrl+N) utilise le bouton Préférences...

Et regardez ce qui est défini comme encodage par défaut :

Encodage par défaut du fichier HTML généré dans Dreamweaver

Transcoder un fichier HTML ouvert dans Dreamweaver possible dans le dialogue Propriétés des pages, qui se lance depuis le menu ModifierPropriétés de la page (Ctrl + J).

Sélectionnez l'encodage souhaité, appuyez sur D'ACCORD et voilà, la tâche de transcodage est terminée (mais la nomenclature est toujours inutile, ne cochez pas la case).

Détection du codage du navigateur

Ainsi, notre fichier HTML est enregistré dans l'encodage que nous avons choisi. Examinons maintenant la question : Comment le navigateur connaît-il l'encodage utilisé dans un fichier HTML donné ?

Il y a trois options ici :

1. Nous indiquons nous-mêmes au navigateur quel encodage est défini pour ce fichier HTML. Cela se fait à l'aide de la balise META

L'exemple ci-dessus indique au navigateur que le fichier HTML téléchargé est enregistré en codage utf-8.

Si le fichier HTML est enregistré avec le codage Windows-1251, alors :

À propos, lors du transcodage de fichiers, n'oubliez pas de remplacer les directives de la balise META par celles actuelles. Dreamweaver, lors de la modification de l'encodage, le fait automatiquement, mais dans d'autres éditeurs de texte, vous devez faire correspondre vous-même l'encodage appliqué et la directive de balise META.

Le HTML complet ressemble à ceci (je le cite pour comprendre la question « où est la balise META avec la directive d'encodage indiquée ? » faites attention à la 4ème ligne) :

Document sans titre Eh bien, etc.

2. Utilisation du fichier .htaccess. Parfois, le serveur forcera les en-têtes des fichiers HTML téléchargés et indiquera au navigateur l'encodage par défaut. Dans ce cas, le navigateur ne fait pas attention aux directives de la balise META, mais affiche le fichier HTML dans l'encodage signalé par le serveur. Pour que le fichier soit téléchargé dans l'encodage dont vous avez besoin (souvent l'hébergement vous oblige à spécifier l'encodage Windows-1251), un fichier appelé « .htaccess » est créé à la racine du répertoire d'hébergement.

Ce fichier est destiné à une configuration supplémentaire du serveur. L'effet des directives .htaccess s'applique à tous les fichiers et sous-répertoires situés dans le répertoire où vous avez enregistré le fichier .htaccess.

Vous pouvez créer ce fichier, par exemple, dans Total Commander en appuyant sur la combinaison de touches de raccourci Maj+F4 et en précisant le nom du fichier créé .htaccess. Ensuite, l'éditeur de texte spécifie des directives pour des paramètres de codage par défaut supplémentaires.

Pour les fichiers HTML codés en utf-8 dans .htaccess, vous devez écrire une ligne :

AddDefaultCharset UTF-8

Pour les fichiers HTML encodés Windows-1251:

AddDefaultCharsetWindows-1251

Si votre hébergement est astucieux et ne prête pas attention à ces directives, alors vous pouvez essayer :

Charsetdisable sur AddDefaultCharset Off

Si cela ne fonctionne pas, demandez simplement à votre hébergeur ce que vous devez faire pour désactiver l'encodage par défaut :). Tout cela dépend des paramètres spécifiques du serveur du fournisseur d'hébergement.

3. Instruction PHP précisant l'encodage par défaut. Dans le fichier qui doit être affiché dans l'encodage souhaité, malgré les paramètres du serveur de l'hébergeur, une directive avec du code php est indiquée au tout début :

Ce code php enverra un en-tête de serveur indiquant l'encodage par défaut du navigateur. Dans l'exemple ci-dessus, l'encodage utf-8 sera utilisé pour afficher la page.

Il n’existe généralement aucune astuce dans les paramètres du serveur du fournisseur d’hébergement pour gérer de tels déchets.

Je tiens à noter que pour que le serveur puisse traiter les instructions PHP, le fichier html doit avoir l'extension .php(par exemple index.php).

Avez-vous d'autres questions sur les encodages ? Écrivez dans les commentaires. Nous devons résoudre ces problèmes une fois pour toutes :)

L'un des problèmes les plus courants auxquels un débutant est confronté Webmestre(et pas seulement les débutants), ceci problèmes de codage sur le site. Même pour moi, cela apparaît constamment lors de la création de sites Web " abracadabra"Mais heureusement, je sais parfaitement comment résoudre ce problème, alors j'ai tout mis en ordre en quelques secondes. Et dans cet article je vais essayer de vous apprendre tout aussi rapidement résoudre les problèmes liés au codage sur le site.

La première chose à noter est que tous les problèmes liés à l'apparition d'« abracadabra » sont associés à une inadéquation entre l'encodage du document et l'encodage défini par le navigateur. Disons qu'un document dans Windows-1251, mais pour une raison quelconque, le navigateur affiche UTF-8. Et la source d'un tel écart peut être les raisons suivantes.

Première raison

La balise méta est mal écrite type de contenu. Attention, il doit toujours contenir l'encodage dans lequel votre document est rédigé.

La deuxième raison

Il semble que la balise méta soit écrite comme vous le souhaitez et que le navigateur affiche exactement ce que vous voulez, mais pour une raison quelconque, il y a toujours des problèmes d'encodage. Le coupable ici est presque certainement que le document lui-même a un codage différent. Si vous travaillez dans Bloc-notes++, puis en bas à droite se trouve le nom de l'encodage du document courant (par exemple, ANSI). Si vous mettez une balise méta UTF-8, et le document lui-même est écrit en ANSI, puis effectuez la conversion en UTF-8(via le menu " Encodages" et point " Convertir en UTF-8 sans BOM").

Troisième raison

Quatrième raison

Et enfin, la dernière raison populaire est problème d'encodage dans la base de données. Tout d’abord, assurez-vous que toutes vos tables et champs sont écrits dans le même encodage, qui correspond à l’encodage du reste du site. Si cela ne résout pas le problème, immédiatement après vous être connecté au script, exécutez la requête suivante :

FIXER LES NOMS "utf8"

Au lieu de " utf8" il peut y avoir un codage différent. Après cela, toutes les données de la base de données devraient sortir avec le codage correct.

Dans cet article, j'espère avoir expliqué, au minimum, 90% des problèmes liés à l'apparition de « charabia » sur le site. Vous devez désormais résoudre en un rien de temps un problème aussi courant et simple qu'un codage incorrect.

Si l'encodage est incorrect, tout ou partie du site est affiché comme « kryapozyablov », c'est-à-dire caractères étranges rendant le texte illisible. Cette situation peut se produire si l'encodage du serveur Web est mal configuré ou s'il n'y a aucun paramètre. Examinons les options possibles et les moyens de résoudre les problèmes

Encodage incorrect de la page HTML

Créons un fichier de test :

Sudo gedit /var/www/html/encoding.html

Copions-y :

Vérification de l'encodage



Ouvrons ce fichier dans le navigateur

Comme vous pouvez le constater, l'encodage est mal détecté par le navigateur :

Il existe plusieurs façons de corriger cette situation. Commençons par la chose la plus simple : spécifier explicitement l'encodage de la page Web. Cela se fait par une balise méta, qui doit être située à l'intérieur de la balise tête:

Ajoutons cette ligne à notre fichier de test pour qu'elle ressemble à ceci :

Vérification de l'encodage

Fichier de test pour vérifier l'encodage



Comme nous pouvons le voir dans la capture d'écran suivante, le problème est résolu :

Si l'encodage de votre fichier est différent de UTF-8, puis remplacez-le par Windows-1251 ou celui qui correspond à l'encodage de la page Web. Pour savoir comment détecter l’encodage de fichiers, jetez un œil.

C’était le moyen le plus simple de résoudre le problème d’encodage – sans modifier les paramètres du serveur.

Renvoyons notre fichier de test à son état d'origine et continuons à étudier les moyens de spécifier l'encodage.

Si les fichiers .htaccess activés par les paramètres Apache, ces fichiers peuvent être utilisés pour spécifier l'encodage des pages envoyées par le serveur Web. Pour activer la prise en charge des fichiers .htaccess dans le fichier de configuration Apache ( /etc/apache2/apache2.conf) trouver un groupe de lignes

Options Index FollowSymLinks AllowOverride Aucun Exiger que tout soit accordé

Et remplacez-le

AllowOverride Aucun

Autoriser tout remplacer

Après cela, le serveur doit être redémarré.

Sudo systemctl redémarrer apache2.service

Déposer .htaccess doit être placé dans le même répertoire que le site. Mon site est hébergé dans le répertoire racine du serveur web. Si vous avez le même, alors maintenant dans le dossier /var/www/html/ créer un fichier .htaccess et ajoutez-y la directive AddDefaultCharset puis indiquez l’encodage souhaité. Exemples

AddDefaultCharset UTF-8

AddDefaultCharset Windows-1251

Vous pouvez spécifier un encodage qui sera appliqué uniquement aux fichiers d'un certain format :

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

L'ensemble de fichiers peut être n'importe quoi, par exemple :

AddCharset utf-8 .html .css .php .txt .js

L'option suivante est une alternative et permet également de définir l'encodage des fichiers d'un certain type ; elle nécessite qu'elle soit activée mod_headers:

En-tête défini Content-Type "text/html; charset=utf-8"

Une autre option qui peut également être utilisée dans le fichier .htaccess pour définir l'encodage UTF-8 :

Options d'index + jeu de caractères = UTF-8

Si le site est en PHP, vous devrez peut-être en plus dupliquer l'encodage avec php_value default_charset:

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

Au lieu de créer un fichier .htaccess, vous pouvez définir l'encodage dans le fichier de configuration du serveur Web. Pour Apache CentOS/Fedora, il s'agit du fichier httpd.conf, et sur Debian/Ubuntu, il s'agit du fichier apache2.conf. Ajoutez la ligne suivante pour définir l'encodage et redémarrez le serveur Web pour que les modifications prennent effet :

AddDefaultCharset UTF-8

Comment définir l'encodage UTF-8 en PHP

Dans le script PHP, l'encodage est défini sur entête, Par exemple:

En-tête("Content-Type : charset=utf-8");

Habituellement, en plus de l'encodage, le type de contenu est également indiqué (dans l'exemple, l'option pour une page HTML) :

Header("Content-Type: text/html; charset=utf-8");

Une autre option pour le flux RSS :

Header("Type de contenu : text/xml; charset=utf-8");

N'oubliez pas que la fonction entête doit être appelé avant toute sortie vers le navigateur. DANS sinon(si la sortie vers le navigateur a déjà été effectuée), alors les en-têtes ont déjà été envoyés. Bien évidemment, dans ce cas il n’est plus possible de les changer. Si un message d'erreur est affiché sur le navigateur, les en-têtes ont déjà été envoyés et l'utilisation de l'en-tête provoquera une erreur. Pour vérifier si les en-têtes ont déjà été envoyés, utilisez headers_sent.

La méthode décrite ne fonctionne que lorsque le script PHP génère entièrement le contenu de la page. Vous devez enregistrer les pages statiques (telles que HTML) en codage utf-8. La plupart des serveurs Web prendront note de l'encodage du fichier et ajouteront un en-tête en conséquence. En fait, enregistrer un fichier PHP en codage utf-8 conduira au même résultat.

Encodage incorrect des résultats de la base de données MySQL

Si votre site se compose d'une partie statique (modèle) et d'une partie dynamique, formée à partir des données reçues de la base de données, une situation peut alors survenir lorsqu'une partie du site a le bon encodage et une autre partie du site a le mauvais. un. Dans ce cas, il est inutile de modifier les paramètres du serveur Web, car une partie de la page aura tout de même un mauvais encodage.

Vous devez commencer par déterminer l'encodage de vos tables. Vous pouvez regarder phpMonAdmin:

Faites attention à la colonne " Comparaison", entrée " utf8_unicode_ci" signifie que l'encodage est utilisé UTF-8.

Vous pouvez vous connecter au SGBD MySQL et vérifier l'encodage des tables sans phpMyAdmin. Pour ça:

Mysql -u racine -p

Si vous avez oublié le nom de la base de données, exécutez la commande :

AFFICHER LES BASES DE DONNÉES ;

Disons que je souhaite rechercher l'encodage des tables dans la base de données information_schema

UTILISER information_schema ;

Si vous avez oublié les noms des tables, exécutez :

AFFICHER LES COLONNES COMPLÈTES DE nom_table ;

Par exemple:

AFFICHER LES COLONNES COMPLÈTES DE GLOBAL_STATUS ;

Vous verrez quelque chose comme ceci :

Voir la colonne Collation. Dans mon cas là utf8_general_ci, c'est comme utf8_unicode_ci, encodage UTF-8. Au fait, si vous ne savez pas quelle est la différence entre les encodages utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, et aussi quel encodage choisir pour la base de données MySQL, alors regardez.

Maintenant que nous connaissons l'encodage (dans mon cas, c'est UTF-8), chaque fois que vous vous connectez au SGBD MySQL, vous devez exécuter des requêtes de manière séquentielle :

FIXER LES NOMS UTF8 SET CHARACTER SET UTF8 SET Character_set_client = UTF8 SET Character_set_connection = UTF8 SET Character_set_results = UTF8

En PHP, cela peut être fait comme ceci :

$this->mysqli = new mysqli($server, $username, $password, $basename); if ($this->mysqli->connect_error) ( $this->errorHandler_c->logError(1, "Erreur de connexion (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error , $_SERVER ["REQUEST_URI"]); ) $this->mysqli->query("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SET Character_set_client = UTF8"); $this->mysqli->query("SET Character_set_connection = UTF8"); $this->mysqli->query("SET Character_set_results = UTF8");

noter que UTF8 vous devez le remplacer par l'encodage utilisé pour vos tables.

Modification de l'encodage d'un fichier

Si vous décidez de faire l’inverse et au lieu d’installer un nouvel encodage, changez l’encodage de vos fichiers, alors regardez l’article « ». Il vous indique comment connaître l'encodage actuel des fichiers et comment convertir des fichiers vers n'importe quel encodage (pas seulement UTF-8).

Comment savoir quel encodage le serveur envoie

Si vous souhaitez connaître les paramètres d'encodage du serveur Web (quel encodage il envoie dans les en-têtes), utilisez la commande suivante :

URL Curl -s -o /dev/null -D /dev/stdout | grep -E "jeu de caractères"

Dedans à la place URL insérez la véritable adresse du site que vous consultez. Si le site utilise HTTPS, précisez l'adresse du site ainsi que le protocole, par exemple

Curl https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "jeu de caractères"

Quel encodage choisir pour un site internet

Pour que les pages de votre site s'affichent correctement dans tous les navigateurs et sur tous types d'appareils, vous devez veiller à paramétrer le bon encodage. Le non-respect de certaines conditions, dont nous discuterons en détail aujourd'hui, peut conduire au fait que le texte se transforme en un ensemble de caractères dénués de sens et tout simplement impossibles à lire (krakozyabry).

Pourquoi des textes merdiques sont-ils affichés à la place du texte normal ?

Chaque page de votre site doit avoir un encodage spécifique. Il est nécessaire d'informer le navigateur du codage actuellement utilisé en lui transmettant des en-têtes spéciaux. Dans ces en-têtes vous devez préciser l'encodage qui correspond à celui que vous utilisez dans le corps des documents mis en ligne sur le site (sur ses pages).

Les navigateurs modernes peuvent déterminer eux-mêmes l'encodage du document si le webmaster a oublié de le spécifier explicitement. Il arrive parfois que des incohérences apparaissent entre « l’opinion » du navigateur et la réalité, d’où l’apparition d’un ensemble de caractères illisibles. Un ensemble d'absurdités peut prendre différentes formes, parfois il s'agira simplement de symboles étranges, semblables à d'anciens hiéroglyphes, et parfois simplement de questions ou de questions à l'intérieur de diamants noirs. Dans l'ensemble, le type de conneries affichées par le navigateur n'est pas si important, mais ce qui est important, c'est qu'une personne ne puisse pas les lire.

Si vous êtes confronté au problème d'un encodage mal spécifié et voyez sur votre site Web quelque chose que vous ne pouvez pas lire, utilisez tout d'abord un décodeur spécial développé dans le studio d'Artemy Lebedev. Pour ce faire, copiez simplement le texte que vous souhaitez décrypter, collez-le dans le champ spécial et cliquez sur « Décrypter ». Si le décodage réussit, vous verrez le texte déjà lisible, ainsi que l'encodage d'origine et le chemin que le programme a dû parcourir pour afficher le résultat.

Tout cela est plutôt nécessaire pour les utilisateurs avancés, pour qui les informations reçues peuvent aider d'une manière ou d'une autre. Peut-être que le résultat des actions du programme vous donnera une idée et vous comprendrez d'où viennent les conneries sur votre site et corrigerez rapidement la situation. Et si les manipulations effectuées ne vous disent rien du tout, alors passons à autre chose.

Comment choisir le bon encodage

Dans cet article, nous n'entrerons pas dans les détails des types d'encodages et en quoi ils diffèrent les uns des autres, car... Nous ne voulons pas vous surcharger ni vous-même d’informations inutiles, et pour les besoins de l’article d’aujourd’hui, ce n’était pas le cas. Il convient seulement de noter que sur un site en langue russe, il ne sert absolument à rien d'installer le codage Windows-1251, qui est décrit de manière exhaustive dans le merveilleux article Wikipédia. Même si tous les textes seront rédigés exclusivement en russe et qu'il n'y aura aucune inclusion de caractères non standard. Au lieu de cela, il vous suffit de choisir le codage universel UTF-8, en le prenant pour acquis, sans vous déranger avec des informations inutiles.

Le fait est qu’il ne sert à rien de choisir pour votre site un encodage qui ne prend en charge que les caractères des langues slaves, comme le russe, l’ukrainien, le biélorusse, le serbe, le macédonien et le bulgare. Pourquoi se limiter dès le début et se condamner à d'éventuels problèmes à l'avenir. Que ferez-vous si vous devez insérer un caractère qui n’est pas pris en charge ?

UTF-8 (de l'anglais Unicode Transformation Format) est un format de transformation Unicode à huit bits qui a reçu une reconnaissance mondiale et a été standardisé précisément pour éviter les problèmes liés à l'apparition de charabia et à la confusion avec des textes illisibles. D'où nous pouvons conclure avec certitude que dans ce cas, vous devez choisir le plus grand des deux maux et dormir paisiblement, sans entrer dans les détails, car tout est clair ici. Regardez la taille de Jupiter et de Vénus à titre de comparaison.

Méthodes de base pour définir le codage correct

Très souvent, les problèmes d'encodage du site surviennent non pas parce qu'aucune des conditions dont nous allons vous parler n'est remplie, mais il suffit de ne pas en remplir une seule pour que le texte de votre site commence à s'afficher de manière incorrecte. Après avoir défini le codage à l'aide de toutes les méthodes ci-dessus, le problème sera résolu avec une probabilité de 99,9 %. Nous sommes arrivés à cette conclusion sur la base de nombreuses années d'expérience de travail avec des sites Web sur diverses plates-formes d'hébergement, en utilisant une variété de systèmes d'administration et de paramètres de serveur.

Encodage en .htaccess - AddDefaultCharset

Tout d'abord, vous devez définir l'encodage par défaut de toutes les pages du site à l'aide d'une directive htaccess très utile - AddDefaultCharset, qui signifie littéralement « Ajouter DefaultCharset ». Cela se fait très simplement :

AddDefaultCharset UTF-8

Si tu ne sais pas ce que c'est , puis créez simplement un fichier texte dans le Bloc-notes, puis à l'aide de Total Commander, renommez-le en fichier sans titre avec l'extension HTACCESS ( - c'est exactement à quoi devrait ressembler le nom complet de votre fichier). Après cela, téléchargez le fichier nouvellement créé dans le répertoire racine de votre site (au même endroit où se trouve le fichier exécutable principal, par exemple index.php). Et n'oubliez pas d'insérer la ligne avec l'encodage par défaut que nous venons de fournir.

Encodage à l'aide d'un méta-jeu de caractères

Les balises méta sont capables d'envoyer des informations sur la page au navigateur sous la forme d'en-têtes spéciaux, dont l'un correspond exactement à ce dont nous avons besoin - jeu de caractères. En général, les balises méta peuvent avoir jusqu'à 4 attributs différents :

  1. contenu;
  2. http-équiv;
  3. nom;
  4. schème.

En fait, sur les quatre attributs présentés, un seul est requis : contenu, mais il y a des exceptions. Par exemple, dans notre cas, nous utiliserons une version abrégée de l'entrée et nous définirons l'encodage à l'aide de la balise méta exactement comme ceci :

L'ancien format d'enregistrement est depuis longtemps tombé dans l'oubli et il ne sert plus à rien de l'utiliser :

Comme vous le savez, les balises méta sont généralement placées à l'intérieur du conteneur. tête. Tout le monde, sans exception, le sait probablement déjà. Faites cette opération et nous passerons à l’élément suivant de notre liste.

Encodage de fichiers à l'aide de la fonction PHP d'en-tête

Cette méthode ne convient qu'à ceux qui ont un site Web implémenté en utilisant le langage de programmation le plus populaire du moment, principalement axé sur la création de sites Web - PHP (Hyper Text Preprocessor). Pour résoudre le problème posé dans cet article, nous utiliserons la merveilleuse fonction header() intégrée, conçue pour transmettre des en-têtes, similaires aux balises méta, mais avec la légère différence que l'action est effectuée à partir d'un script PHP, et non via Sortie de code HTML.

Définir l'encodage UTF-8 pour un fichier à l'aide de la fonction entête() assez simple - il vous suffit de coller le code donné au tout début de la page, mais bien sûr à l'intérieur du scope PHP, qui est noté ainsi :ou alors -.

Header("Type de contenu : text/html; charset=utf-8");

Le plus point important voici que nous avons le droit de transmettre des en-têtes uniquement s'il n'y a eu aucune sortie du script auparavant. C'est pourquoi nous insérons ce code tout en haut de la page. Vous devez le faire judicieusement et bien comprendre ce qui se passe, car vous pouvez être sûr que vous insérez un en-tête au début du fichier, mais vous ne savez peut-être pas que ce fichier est utilisé dans un autre fichier dans lequel il est tiré à l'aide de la fonction exiger ou inclure déjà après certaines informations s’affichait à l’écran. Par conséquent, si vous ne comprenez pas très bien de quoi nous parlons maintenant, il vaut mieux passer à l'étape suivante et y revenir si les 3 précédentes n'ont pas permis de définir le bon encodage des pages de votre site.

Enregistrer les fichiers dans le bon encodage

L’une des raisons probablement les plus courantes de l’apparition de fissures sur un site Web est le codage incorrect des fichiers eux-mêmes utilisés pour générer le document final. Le plus souvent, ce problème se pose chez les programmeurs débutants qui font tout juste leurs premiers pas dans la maîtrise de l'art. Lorsque l'un des systèmes d'administration actuellement populaires est sélectionné comme moteur de site, ce problème peut se produire dans des cas très rares, mais s'il est utilisé, cela se produit dans presque un cas sur trois.

Comme nous l'avons convenu précédemment, le codage que nous utilisons sur tous les sites en langue russe, même les plus sophistiqués, est UTF-8, nous encoderons donc tous les fichiers qui composent le moteur du site dans le même format. Et pour modifier l'encodage du fichier lui-même, téléchargé sur le serveur, utilisez le bloc-notes habituel fourni par le système d'exploitation Système Windows Ce ne sera certainement pas suffisant. Il est donc préférable d'utiliser programme tiers, distribué gratuitement - Notepad++, téléchargeable sans problème depuis le site officiel.

Après avoir terminé avec succès le processus d'installation simple, vous devrez attribuer ce programme comme éditeur par défaut, effectuer quelques réglages à votre goût et modifier l'encodage du fichier incorrectement affiché de la même manière que celui indiqué dans la capture d'écran. Ceux. vous devez sélectionner "Encoder en UTF-8 (pas de nomenclature)". Un bon signe Si tel était le cas, aucune des options ne sera initialement sélectionnée et vous serez invité à « Convertir en UTF-8 (pas de nomenclature) ». Si vous voyez cela, assurez-vous qu'il ne reste que quelques secondes avant de résoudre le problème d'encodage.

De plus, je veux juste dire que vous devez choisir exactement sans nomenclature. Sinon, si vous encodez simplement en UTF-8 (avec BOM), alors des octets supplémentaires seront créés au début du fichier. Ils essaient de ne pas utiliser BOM - Byte Order Mark sur le Web lors de l'encodage au format UTF-8, car cela conduit à des erreurs en interférant avec l'interprétation correcte de PHP.

Eh bien, maintenant que tout actions nécessaires terminé, vous verrez très probablement un texte facile à lire sur les pages de votre site Web et respirerez facilement :)