Comment définir l'encodage HTML de la page php. Dans quel encodage enregistrer une page web ?

Données initiales

  1. Prenons notre site Web comme exemple : www.yourmaster.ru
  2. Tous les textes du site sont rédigés et publiés sur le site en codage "windows-1251" et le navigateur n'en est pas informé
  3. Le serveur d'hébergement envoie automatiquement l'en-tête suivant par défaut :
    Type de contenu : texte/html ; jeu de caractères = utf-8

S’il existe une telle différence entre l’encodage réel du site et les informations d’encodage contenues dans l’en-tête envoyé par le serveur, des problèmes surviendront lors de l’affichage des pages du site dans le navigateur des visiteurs.

Un encodage correct est très important !

Essayons d'expliquer pourquoi.

Avec les paramètres décrits ci-dessus, le navigateur de l'utilisateur ne pourra pas déterminer automatiquement dans quel encodage sont rédigés les textes du site consulté. Et très probablement, il affichera les pages dans un désordre illisible. Si vous rencontrez un tel « problème de communication » entre le navigateur et votre site, vous devez alors prendre de toute urgence les mesures appropriées. Sinon, cela entraînera très probablement une série de problèmes graves.

Premièrement, dans de telles conditions et paramètres du site, les visiteurs devront constamment spécifier manuellement (à l'aide de la méthode de sélection) l'encodage du navigateur pour afficher le site. Cela nécessitera quelques clics de souris supplémentaires. Mais vous devez admettre que tout le monde n'aimera pas faire 2-3 clics de souris supplémentaires juste pour voir les informations sur la page sous une forme lisible. De plus, beaucoup de gens ne savent même pas non seulement comment modifier l'encodage d'affichage dans les paramètres du navigateur, mais aussi ce qu'est l'encodage en général ! La plupart des visiteurs peuvent décider que le site a été abandonné par le propriétaire ou piraté par quelqu'un et essaieront de ne plus y revenir.

Deuxièmement, s'il existe une définition ambiguë de l'encodage des pages du site, les moteurs de recherche peuvent ne pas indexer correctement le contenu textuel du site. Ce qui entraîne de sérieux problèmes avec le trafic des utilisateurs des moteurs de recherche. Bien sûr, certains moteurs de recherche peuvent essayer de déterminer d'une manière ou d'une autre le codage correct à partir du contenu des pages, mais cela ne rend pas les choses beaucoup plus faciles. En règle générale, le problème persiste.

J'espère que vous avez réalisé que les problèmes de codage peuvent devenir un obstacle très sérieux au fonctionnement du site, à son développement et à l'attraction de visiteurs réguliers.

Pour éviter que de tels problèmes d'encodage ne surviennent, vous devez effectuer les réglages appropriés à la fois sur le serveur d'hébergement et sur les pages du site.

Les paramètres du site doivent être tels que n'importe quel navigateur ou n'importe quel robot de moteur de recherche puisse déterminer MALENTEMENT dans quel cryptage les informations du site sont transmises !

Résoudre un problème d'encodage de site

Nous avons déjà remarqué que tous les textes de notre site sont rédigés et transmis au navigateur du visiteur du site en codage « Windows-1251 ». Que pouvons-nous faire pour nous assurer que le serveur sur lequel notre site est hébergé transmette les bonnes informations d'encodage au navigateur dans l'en-tête ? Procédons dans l'ordre...

1. Afin de ne pas dépendre des paramètres du serveur, sur toutes les pages du site, directement dans le code HTML, vous devez écrire explicitement la directive suivante à l'aide d'une balise méta :

Il doit être placé sur toutes les pages, de préférence immédiatement après la balise d'ouverture . Cela permettra au navigateur de sélectionner automatiquement le bon codage d'affichage lors du chargement et de l'interprétation de la page conformément à la directive reçue ! Cette directive à elle seule devrait suffire à résoudre notre problème. Mais c’est ainsi que cela était prévu en théorie. Mais en pratique, cette directive ne suffit pas toujours. Dans de rares cas, mais il arrive que le navigateur sélectionne comme encodage d'affichage de la page non pas celui spécifié dans la directive sur la page elle-même, mais celui envoyé en en-tête depuis le serveur ! Et si les informations de codage spécifiées à deux endroits ne correspondent pas, le problème peut persister.

2. Pour que le serveur donne les bonnes informations d'encodage dans sa réponse, vous devez créer un fichier à la racine de votre site .htaccess et écrivez-y la directive :

AddDefaultCharset Windows-1251

Ensuite le serveur continuera à envoyer l’entête d’encodage par défaut, mais le nom de l’encodage correspondra à celui en vigueur sur le site lui-même. Il n'y aura plus de divergences dans les noms.

Si le fichier .htaccess existe déjà sur votre serveur, alors ajoutez simplement la directive spécifiée, par exemple, au tout début. Et vous ne devez en aucun cas supprimer inutilement des informations qui y existent déjà !

C'est la solution au problème. D'accord, tout cela n'est pas si difficile ?! Mais c’est très utile pour éviter toutes sortes de problèmes liés au fameux encodage.

En suivant successivement les deux recommandations énumérées ci-dessus, les navigateurs ne pourront certainement pas se tromper en sélectionnant automatiquement le bon encodage pour afficher les informations sur votre site Web. Après tout, nous avons indiqué les informations de codage sans ambiguïté, correctement et même dans deux directives différentes !

Situations particulières

Première situation

Les créateurs de sites Web, et le plus souvent même les clients eux-mêmes, commencent à apporter arbitrairement et inconsidérément certaines modifications au site Web, à placer des textes à leur guise, etc. Au point qu'ils peuvent ainsi se retrouver sur le site Web. sections avec des informations dans différents encodages. Nous ne pouvons pas dire que c’est la bonne approche, mais nous écarterons le fait que cela se produise et c’est tout. Dans ce cas, même si nous suivons les deux recommandations énumérées ci-dessus, une situation peut toujours survenir lorsque le serveur fournit des informations sur un encodage et qu'un autre encodage est clairement écrit dans le code HTML de la page. Dans un tel cas, la solution la plus simple serait peut-être la suivante.

Écrire dans un fichier .htaccess directif:

AddDefaultCharset désactivé

Lors de l'utilisation de cette directive, le serveur n'enverra tout simplement pas d'en-tête contenant des informations sur le codage de la page transmise. Ensuite, les navigateurs partiront des données d'encodage, qui sont indiquées explicitement dans le code HTML sur les pages du site elles-mêmes. De plus, sur une page, les données peuvent être codées Windows-1251, et sur une autre page, par exemple dans utf-8. L'essentiel est de ne pas oublier d'indiquer sur ces pages les balises méta appropriées contenant des informations sur le codage correct pour la reconnaissance et l'affichage du texte par le navigateur.

Bien qu'une telle solution soit la plus simple, elle n'est peut-être pas la plus optimale et la plus correcte. Dans le bon sens, vous devez placer toutes les informations sur le site et dans toutes les sections du site dans le même encodage ! Et s'il y a plusieurs pages dans un encodage différent, il est alors préférable de mettre à jour les informations qu'elles contiennent en convertissant tous les textes dans l'encodage requis.

Deuxième situation

Comme vous le savez, lors de la génération des pages, la plupart des sites sélectionnent une partie des données d'une base de données, par exemple MySQL (si le site est écrit en PHP). Souvent, lors du transfert d'un site d'un hébergement à un autre, des problèmes peuvent survenir en raison d'inadéquations d'encodage entre les données stockées dans la base de données MySQL et les données stockées, par exemple directement dans les modèles de site. Ainsi, il peut arriver que lors de la création d'une page, elle contienne des données dans différents encodages. Il s’agit peut-être de l’une des erreurs d’encodage les plus graves possibles sur un site Web et doit être résolue immédiatement. Sinon, des difficultés supplémentaires pourraient survenir ultérieurement lors du remplissage et de l'édition du site.

La résolution de tels désaccords avec les données stockées dans la base de données est obtenue en définissant correctement et explicitement les paramètres de codage lors de la connexion à la base de données et avant d'en récupérer les données. Par exemple, si les données de notre site Web sont stockées avec le codage Windows-1251, nous devons alors lire les données de la base de données avec le même codage. Pour cela, après vous être connecté à la base de données à l'aide de la fonction PHP mysql_connect() (ou mysql_pconnect()), exécutez la requête SQL suivante :

mysql_query("DÉFINIR LES NOMS cp1251");

Cette requête indique au serveur de base de données MySQL que toutes les données sont stockées et doivent être transmises avec le codage cp1251 (il s'agit du nom de codage utilisé dans MySQL au lieu du nom mentionné précédemment windows-1251, qui est utilisé lors de la transmission de données HTML).


Le premier problème sérieux auquel sont confrontés la plupart des débutants est lié au jeu de caractères. jeu de caractères). Ce problème d'encodage s'exprime dans ce que l'on appelle les « crackers », que nous recevons à la place des caractères spécifiés dans le fichier HTML. Dans cet article, je souhaite examiner le problème d'encodage plus en détail, essayer de tout mettre en ordre et proposer des solutions possibles.

  • Qu’est-ce que l’encodage ?
  • Encodage de fichiers (édition dans Notepad++)
  • Encodage d'affichage (afficher dans le navigateur)
  • Comment spécifier l'encodage d'une page HTML ? (balise méta charset)
  • Vous avez toujours un problème d'encodage ? (jeu de caractères d'en-tête en php)

Qu’est-ce que l’encodage ?

Relativement parlant, chaque symbole(signe) se compose de code Et des photos. Ici code est l'identifiant unique d'un caractère dans le jeu de caractères, qui est déterminé par le codage, UN image est une représentation visuelle d'un symbole contenu dans fichier de police dans la cellule correspondant au code du symbole.

Autrement dit, codage(Anglais) jeu de caractères) est un ensemble de relations codes de caractères avec leur représentations visuelles dans la police.

Encodage de fichiers

Une page HTML est un fichier texte ordinaire dont l'encodage est sélectionné lors de sa création et/ou de son enregistrement sur un périphérique de stockage. (disque dur, clé USB, etc.).

Dans le cas de Notepad++, l'encodage du nouveau document est défini dans les paramètres de l'éditeur de texte. Sélectionnez dans le menu : Options > Paramètres…- et allez dans l'onglet " Nouveau document" Ici nous nous intéressons à la rubrique « Codage" Par défaut, l'encodage est sélectionné ANSI.

Permettez-moi de vous rappeler qu'il s'agit de l'encodage dans lequel le fichier HTML sera stocké.

Cependant, vous pouvez toujours convertir l'encodage Pages HTML utilisant les fonctions appropriées de l'éditeur de texte. Par exemple, dans Notepad++, pour ce faire, cliquez sur l'élément de menu « Encodages» et sélectionnez la transformation souhaitée.

Dans ce cas, le fichier a été codé ANSI et je l'ai converti en UTF-8(sans nomenclature) . Vous pouvez découvrir ce qu'est cette nomenclature dans mon article : PHP : comment supprimer la nomenclature dans WordPress - en suivant.

Encodage d'affichage

Il est important de se séparer encodage de fichiers Et affichage du codage. Quel que soit le codage dans lequel un fichier est stocké, il peut être affiché dans n'importe quel autre codage. C'est l'une des raisons des problèmes d'encodage.

Par exemple, si vous avez enregistré une page HTML codée ANSI et ouvrez-le dans le navigateur, au lieu des caractères russes, vous pouvez obtenir les soi-disant « krakozyabriks ».

Dans ce cas, nous devons nous assurer que encodage de fichiers coïncide avec affichage du codage fichier dans le navigateur. Pour ce faire dans Firefox, cliquez sur l'icône de menu, puis sur l'élément « Codage" Si vous n’en avez pas, cliquez sur « Changement" et ajoutez l'élément " Codage" dans le menu.

Comme vous pouvez le constater, le navigateur affiche le fichier dans l'encodage " Unicode» (Par exemple, UTF-8) , alors que le fichier était enregistré en encodage ANSI (Par exemple, Windows-1251) . En choisissant l'encodage souhaité, nous obtiendrons le résultat dont nous avons besoin.

Dans le cas de Notepad++, il est également possible de sélectionner l'encodage de l'affichage. Pour ce faire, cliquez sur l'élément de menu " Encodages", puis la version souhaitée de l'encodage utilisé pour afficher.

Dans ce cas, j'ai modifié le codage de l'affichage ANSI sur UTF-8(sans nomenclature) .

Comment spécifier l'encodage d'une page HTML ?

Et donc, nous avons déjà compris ce qu'est l'encodage et quelle est la différence entre l'encodage de fichier et l'encodage d'affichage. Nous devons maintenant résoudre le problème d'encodage, qui est interprétation erronée navigateur (ou tout autre client) Encodages de pages HTML.

Pourquoi y a-t-il des problèmes d'encodage ? Déterminer l'encodage d'une page HTML n'est pas facile, et souvent impossible, car le même navigateur ne dispose pas d'informations à ce sujet ou il est mal spécifié.

Pour spécifier l'encodage d'une page HTML, une balise méta spéciale est utilisée. En HTML5, il a la forme simplifiée suivante :

Dans ce cas, le codage est UTF-8(Unicode) .

Dans les anciennes versions de HTML, cette balise méta ressemble à ceci :

Cette balise méta crée un en-tête HTTP Content-Type qui spécifie le type de document text/html et son codage Windows-1251 (ANSI).

Personnellement, je recommande d'utiliser cette option, car... c'est lui qui aura le moins de problèmes. L'essentiel est qu'une telle balise méta soit présente dans la section HEAD et que l'encodage qui y est spécifié corresponde à l'encodage du fichier. Dans la plupart des cas, cela sera suffisant.

Vous avez toujours un problème d'encodage ?

Dans certains cas, spécifier une balise méta avec l'encodage de la page HTML ne suffira pas. Ce problème peut être dû aux paramètres du serveur lui-même sur lequel se trouve le fichier de page HTML. Le fait est que le serveur est capable d'émettre le mien En-tête HTTP Content-Type , qui aura, relativement parlant, préséance sur la balise méta.

Dans ce cas, ce problème peut être résolu en modifiant les paramètres du serveur. Je n'entrerai pas dans les détails de ce problème et recommanderai seulement de désactiver tout cet encodage via le fichier .htaccess, Par exemple:

Jeu de caractèresDésactiver

Vous pouvez également apporter des modifications à l’en-tête HTTP Content-Type par programme. Dans le même PHP, la fonction header() est utilisée pour cela, par exemple :

header("Content-Type: text/html; charset=UTF-8");

J'attire votre attention sur le fait que les entêtes HTTP doivent être précisés à afficher certaines informations à l'écran, sinon vous recevrez un message d'erreur.

Plus tard ASCII a été étendu (au départ, il n'utilisait pas les 8 bits), il est donc devenu possible d'utiliser non pas 128, mais 256 (2 à la puissance 8) caractères différents qui peuvent être codés dans un octet d'information.
Cette amélioration a permis d'ajouter au codage ASCII symboles des langues nationales de différents pays, en plus de l'alphabet latin déjà existant.
Options d'encodage étendues ASCII Il y en a beaucoup car il existe également de nombreuses langues dans le monde. Je pense que beaucoup d'entre vous ont entendu parler d'un codage tel que KOI8 (Code of Information Exchange, 8 bits) - c'est aussi un codage étendu ASCII. KOI8 comprenait des chiffres, des lettres de l'alphabet latin et russe, ainsi que des signes de ponctuation, des caractères spéciaux et des pseudographies.

Encodage ISO

L'Organisation internationale de normalisation a créé une gamme d'encodages pour différents alphabets/langues.

Codages de la série ISO 8859

Codage Description
ISO 8859-1 (Latin-1) Latin étendu, comprenant des caractères de la plupart des langues d'Europe occidentale (anglais, danois, irlandais, islandais, espagnol, italien, allemand, norvégien, portugais, romanche, féroïen, suédois, gaélique écossais et certaines parties du néerlandais, finnois, français), comme ainsi que certaines langues d'Europe de l'Est (albanais) et africaines (afrikaans, swahili). Latin-1 n'a pas le signe euro et la lettre majuscule Ÿ. Cette page de codes est considérée comme l'encodage par défaut pour les documents HTML et les messages électroniques. De plus, les 256 premiers caractères Unicode correspondent à cette page de codes.
ISO 8859-2 (Latin-2) Latin étendu, comprenant des caractères des langues d'Europe centrale et d'Europe de l'Est (bosniaque, hongrois, polonais, slovaque, slovène, croate, tchèque). Latin-2, comme Latin-1, n'a pas le signe euro.
ISO 8859-3 (Latin-3) Latin étendu, comprenant des caractères de langues du sud de l'Europe (maltais, turc et espéranto).
ISO 8859-4 (Latin-4) Latin étendu, comprenant des caractères des langues d'Europe du Nord (langues groenlandaise, estonienne, lettone, lituanienne et sami).
ISO 8859-5 (latin/cyrillique) Cyrillique, comprenant des caractères de langues slaves (biélorusse, bulgare, macédonien, russe, serbe et en partie ukrainienne).
ISO 8859-6 (latin/arabe) Symboles utilisés en arabe. Les caractères d'autres langues arabes ne sont pas pris en charge. La prise en charge de l'écriture bidirectionnelle et des formes de caractères contextuelles est requise pour afficher correctement le texte ISO 8859-6.
ISO 8859-7 (latin/grec) Symboles de la langue grecque moderne. Peut également être utilisé pour écrire des textes grecs anciens en orthographe monotone.
ISO 8859-8 (latin/hébreu) Symboles de l'hébreu moderne. Il est utilisé en deux versions : avec un ordre logique des caractères (nécessite la prise en charge de l'écriture bidirectionnelle) et avec un ordre visuel des caractères.
ISO 8859-9 (Latin-5) Une variante du Latin-1 qui remplace les caractères islandais rarement utilisés par des caractères turcs. Utilisé pour les langues turques et kurdes.
ISO 8859-10 (Latin-6) Une variante Latin-4 plus adaptée aux langues scandinaves.
ISO 8859-11 (latin/thaïlandais) Symboles de la langue thaïlandaise.
ISO 8859-13 (Latin-7) Variante Latin-4, plus pratique pour les langues baltes.
ISO 8859-14 (Latin-8) Une écriture latine étendue qui comprend des caractères de langues celtiques telles que le gaélique écossais et le breton.
ISO 8859-15 (Latin-9) Une variante de Latin-1 qui remplace les caractères rarement utilisés par ceux nécessaires à la prise en charge complète du finnois, du français et de l'estonien. De plus, le signe euro a été ajouté au Latin-9.
ISO 8859-16 (Latin-10) Latin étendu, comprenant des caractères de langues d'Europe du Sud et de l'Est (albanais, hongrois, italien, polonais, roumain, slovène, croate), ainsi que certaines langues d'Europe occidentale (irlandais dans la nouvelle orthographe, allemand, finnois, français ). Comme Latin-9, Latin-10 a ajouté le signe euro.

Pour les documents en anglais et dans la plupart des autres langues d'Europe occidentale, l'encodage est largement pris en charge ISO-8859-1.

En HTML ISO-8859-1 est l'encodage par défaut (en XHTML et HTML5, l'encodage par défaut est UTF-8).
Lorsque vous utilisez un encodage de page autre que ISO-8859-1, vous devez l'indiquer dans la balise .

Pour HTML4 :

Pour HTML5 :

Un exemple de codage ANSI est le célèbre Windows-1251.

Windows-1251 se distingue avantageusement des autres encodages cyrilliques 8 bits (tels que CP866 et ISO 8859-5) par la présence de presque tous les caractères utilisés dans la typographie russe pour le texte ordinaire (seul l'accent manque). Il contient également tous les symboles des autres langues slaves : ukrainien, biélorusse, serbe, macédonien et bulgare.
Vous trouverez ci-dessous les valeurs décimales des caractères codés Windows-1251.

Pour afficher les symboles de tableau dans un document HTML, utilisez la syntaxe suivante :

& +code+ ;

Encodage Windows-1251 (CP1251)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .UN .B .C .D .E .F

8.
Ђ
402
Ѓ
403

201A
ѓ
453

201E

2026

2020

2021

20AC

2030
Љ
409

2039
Њ
40A
Ќ
40C
Ћ
40B
Џ
40F

9.
ђ
452

2018

2019

201C

201D

2022

2013
-
2014

2122
љ
459

203A
њ
45A
ќ
45C
ћ
45B
џ
45F

UN.

A0
Ў
40E
ў
45E
Ј
408
¤
A4
Ґ
490
¦
A6
§
A7
Yo
401
©
A9
Є
404
«
AB
¬
A.C.
­
ANNONCE
®
A.E.
Ї
407

B.
°
B0
±
B1
І
406
і
456
ґ
491
µ
B5

B6
·
B7
e
451

2116
є
454
»
BB
ј
458
Ѕ
405
ѕ
455
ї
457

C.
UN
410
B
411
DANS
412
G
413
D
414
E
415
ET
416
Z
417
ET
418
Oui
419
À
41A
L
41B
M
41C
N
41D
À PROPOS
41E
P.
41F

D.
R.
420
AVEC
421
T
422
U
423
F
424
X
425
C
426
H
427
Ch
428
SCH
429
Kommersant
42A
Oui
42B
b
42C
E
42D
Yu
42E
je
42F

E.
UN
430
b
431
V
432
G
433
d
434
e
435
et
436
h
437
Et
438
ème
439
À
43A
je
43B
m
43C
n
43D
Ô
43E
n
43F

F.
r
440
Avec
441
T
442
à
443
f
444
X
445
ts
446
h
447
w
448
sch
449
ъ
44A
s
44B
b
44C
euh
44D
toi
44E
je
44F

Encodages standard UNICODE

Unicode est une norme de codage de caractères qui permet de représenter les caractères de presque toutes les langues écrites du monde, ainsi que les caractères spéciaux. Les caractères représentés en Unicode sont codés sous forme d'entiers non signés. Unicode propose plusieurs formes de représentation des caractères sur un ordinateur : UTF-8, UTF-16 (UTF-16BE, UTF-16LE) et UTF-32 (UTF-32BE, UTF-32LE). (Anglais : format de transformation Unicode - UTF).
UTF-8 est un codage actuellement courant et largement utilisé dans les systèmes d'exploitation et sur le Web. Le texte composé de caractères Unicode numérotés inférieurs à 128 (zone de code U+0000 à U+007F) contient des caractères définis ASCII avec les codes correspondants. Viennent ensuite les zones de caractères de diverses écritures, signes de ponctuation et symboles techniques. Des zones de caractères avec des codes de U+0400 à U+052F, de U+2DE0 à U+2DFF, de U+A640 à U+A69F sont réservées aux caractères cyrilliques.

Codage UTF-8 est universelle et dispose d’une réserve impressionnante pour l’avenir. Cela en fait l’encodage le plus pratique à utiliser sur Internet.



Veuillez activer JavaScript pour afficher le

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 symboles de machine qu'un 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 ont été comparés à des codes machine en utilisant le même algorithme, mais concernant l'alphabet cyrillique, chacun des codages 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 !

Actuellement le 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 que vous 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 :)

Lors de la création d'un site Web, les webmasters débutants se posent souvent des questions : quel encodage utiliser pour le site Web, en quoi UTF-8 diffère de Windows-1251 et comment le saisir dans le jeu de caractères META des pages HTML du site. Les réponses à toutes ces questions se trouvent dans cet article.

Qu’est-ce que l’encodage de site et comment ça marche ?

Le codage peut être présenté sous la forme d'un tableau composé de différentes lettres, chiffres et autres symboles compréhensibles par l'homme, qui sont codés d'une certaine manière. Lorsque vous ouvrez un fichier texte contenant des pages HTML, l'ordinateur lit dans l'en-tête du fichier dans quel encodage il a été enregistré et affiche le texte dans l'encodage approprié, convertissant les données informatiques sous une forme compréhensible pour les humains en comparant ces données avec le table d'encodage. Si les informations d'encodage de l'en-tête du fichier correspondent à l'encodage dans lequel les données sont stockées dans la page HTML, alors l'utilisateur voit les lettres, chiffres et autres symboles qu'il connaît. S'il y a une divergence, le résultat est que l'utilisateur se voit présenter un ensemble de caractères incompréhensible, ce qui arrive particulièrement souvent dans les anciens programmes de messagerie. Si un utilisateur reçoit une lettre avec un charabia incompréhensible, alors simplement en passant par différents encodages, il est généralement possible de deviner et de sélectionner celui dans lequel la lettre est écrite, et par conséquent, un ensemble de caractères incompréhensibles se transforme en un jeu de caractères compréhensible par l'homme. texte.

La même chose se produit avec les pages HTML du site. Si le document a été enregistré, par exemple, en codage UTF-8 et que le document lui-même contient une balise META indiquant qu'il s'agit d'un encodage Windows-1251, alors le navigateur comparera à nouveau les données enregistrées dans le fichier avec le tableau d'encodage. qui lui est spécifié et comme les caractères sont codés différemment selon -, le navigateur affichera un ensemble de caractères incompréhensible au lieu du texte habituel, ou certaines lettres peuvent être sous forme normale, tandis que d'autres lettres ou symboles peuvent être affichés, par exemple par exemple, sous forme de points d’interrogation. Tout ce qui précède s'applique également à l'affichage des noms de fichiers.

Lors de la création d'un nouveau document dans un éditeur de texte, il est préférable de s'assurer immédiatement que l'encodage souhaité est sélectionné. Les éditeurs modernes vous permettent de convertir le texte d'un document ouvert d'un encodage à un autre, et le Bloc-notes standard vous permet de sélectionner l'encodage uniquement lors de l'enregistrement du fichier.

Les encodages les plus courants

Grâce au paragraphe précédent, vous savez déjà ce qu'est l'encodage et pourquoi il est si important de l'écrire correctement dans le code des pages du site. Voyons maintenant lequel des nombreux encodages est le meilleur à choisir pour le futur site. Étant donné que le système d'exploitation le plus courant et le plus facile à apprendre a toujours été le système d'exploitation Windows, la plupart des développeurs Web ont créé des pages HTML dans le codage Windows-1251 (ANSI), qui était utilisé par défaut. Mais Windows-1251 ne prend pas en charge un très grand nombre de lettres et de symboles, et les développeurs souhaitent utiliser diverses flèches, cœurs, carrés et autres symboles dans leurs textes, y compris la nécessité de combiner des mots de différentes langues dans un seul document, donc il a longtemps été remplacé par l'arrivée de l'UTF-8 plus étendu et la plupart des développeurs utilisent cet encodage.

Problèmes d'encodage non seulement dans la page HTML

Le site, qu'il s'agisse simplement d'un ensemble de documents HTML statiques ou de scripts dynamiques complexes générant des pages à la volée, est hébergé sur un serveur web, qui fonctionne également avec un encodage spécifique. Et si le serveur fournit des informations dans un encodage et que vos pages ou scripts sont enregistrés dans un encodage différent, là encore, des problèmes peuvent survenir lors de l'affichage des pages dans le navigateur de l'utilisateur. De nombreux hébergements vous permettent de modifier les paramètres et de sélectionner l'encodage en fonction de celui utilisé dans les fichiers du site via le panneau de configuration, ou vous pouvez l'écrire dans le fichier .htaccess si l'hébergement utilise le populaire serveur Web Apache.

Presque aucun site Web moderne ne peut fonctionner sans utiliser une base de données MySQL, et cela peut également devenir une source de problèmes d'encodage. Si les fichiers du site sont enregistrés dans un encodage et que les informations de la base de données le sont dans un autre, alors sur la page, la partie des informations extraites de la base de données peut être affichée sous la forme des mêmes points d'interrogation ou d'autres symboles incompréhensibles. . Pour éviter des problèmes d'encodage, il doit en être de même pour le serveur web, la base de données MySQL, dans les scripts, dans les pages HTML du site et dans la balise META, qui est écrite dans le code HTML. S'il y a des problèmes avec l'affichage du texte, vérifiez tout ce qui précède pour trouver le problème.

Jeu de caractères META du document HTML

Pour indiquer au navigateur et aux moteurs de recherche dans quel encodage les pages du site sont enregistrées, un META Charset est écrit dans leur code.

Pour l'encodage Windows-1251 :

Titre de la page

Texte de la page




Pour l'encodage UTF-8 :

Titre de la page

Texte de la page




Vous savez maintenant ce qu'est l'encodage du site et où rechercher les problèmes si le texte ne s'affiche pas correctement dans n'importe quelle partie du site.

La copie de l'article est interdite.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :