Codificarea caracterelor în HTML

Limbajul de marcare hipertext HTML a fost folosit din 1991, dar versiunea 4.0 (1997) a fost prima în care reprezentarea caracterelor non- ASCII (adică, engleză) este destul de standardizată.

Determinarea codificării utilizând HTTP

Când afișați o pagină HTML de către browsere, acestora din urmă trebuie să li se spună în ce codificare este salvată pagina. Pentru a face acest lucru, puteți utiliza două metode:

Când transmiteți un document HTML prin HTTP (să zicem, către WWW ), setul de caractere al documentului este specificat în antetul HTTP , de exemplu, pentru text în versiunea rusă a codificării KOI-8 :

Tip de conținut: text/html; set de caractere=koi8-r

Informațiile de codificare pot fi inserate în documentul HTML în sine, folosind o etichetă metaîntr-o secțiune a <head>documentului HTML. De exemplu, în cazul codificării UTF-8, eticheta metaar arăta astfel:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

În standardul pentru limbajul HTML 5, metaeticheta care informează browserul despre codificarea paginii este scrisă diferit de regulile adoptate în standardele HTML anterioare. Deci exemplul de mai sus în HTML 5 ar arăta astfel:

<meta charset="utf-8" />

Această metodă funcționează bine pentru . Conform HTTP/1.1, nespecificarea unui set de caractere într-un antet este echivalentă cu utilizarea setului de caractere ISO 8859-1 .

Adică factorul de prioritate pentru browser la întrebarea „în ce codificare să afișeze documentul” poate fi antetul transmis de server. În acest caz, browserul trebuie să ignore directivele corespunzătoare din eticheta META.

Setarea antetelor trimise de server

1. Când utilizați serverul Apache , puteți utiliza fișierul .htaccess . În acesta, trebuie să specificați directive serverului cu privire la codificări implicite: AddDefaultCharset UTF-8 În exemplul de mai sus, UTF-8 va fi atribuit ca codificare implicită în anteturile serverului.

În cazul codificării Windows-1251 : AddDefaultCharset windows-1251

Aceste directive de fișier .htaccess sunt cele mai frecvent utilizate. Dar, în fiecare caz individual, este posibil să nu funcționeze. Totul depinde de setările serverului.

Există directive mai puțin populare care au scopul de a dezactiva antetele serverului. Când sunt dezactivate, browserul va alege codificarea în funcție de indicațiile din eticheta META.

charsetdisable on

AddDefaultCharset Off

Adesea, problemele de afișare de codificare se datorează faptului că software-ul web vechi (de exemplu, un site web , CMS , etc.) utilizează codificarea națională în timp ce serverul este configurat să funcționeze cu UTF-8. În acest caz, forțează limbajul, codificarea cerută de software (de exemplu, cp1251) pentru serverul web și (de obicei) interpretul PHP.

DefaultLanguage ru

AddDefaultCharset windows-1251

php_value default_charset "cp1251"

2. Directiva PHP-code: La începutul fișierului php, puteți specifica un cod php care va trimite instrucțiuni către browser pentru a selecta codificarea: <?php header('Content-type: text/html; charset=utf-8')?>

Definirea unei codificări folosind XML

În XHTML, puteți specifica și codificarea în preambulul XML , de exemplu:

<?xml version="1.0" encoding="utf-8"?>

Mnemonice HTML și coduri Unicode

Caracterele care au nume speciale (vezi mnemonicii HTML ) pot fi codificate ca &entity;, de exemplu:

În același timp, toate caracterele pot fi, de asemenea, codificate în notație numerică folosind coduri zecimale Unicode (&#DD;) sau hexazecimale (&#xHHHH; ) .

Browserul corect va afișa caracterele specificate în modul de mai sus, indiferent de codificarea curentă a documentului și, în special, chiar și în cazul în care astfel de caractere nu pot fi acoperite de acesta. Astfel, textul japonez este posibil într-un document HTML scris în Windows-1251 etc.