Ansi-codepagina. HTML-paginacodering

Het alfabet van 256 tekens is groot genoeg voor letters (hoofdletters en kleine letters) voor een aantal Europese talen, cijfers, vriendelijke leestekens en wat meer details.

Maar er moet rekening worden gehouden met het feit dat de mensheid een enorm aantal pictogrammen heeft uitgevonden die zelfs zo'n groot alfabet niet kunnen bevatten. Zelfs als we niet zoveel tekens in één tekst nodig hebben en we ons beperken tot de hierboven genoemde, doet zich een probleem voor: hoe pictogrammen uit een beperkte set te koppelen aan getallen in het bereik 0 255. Als op de ene computer de letter A is gecodeerd met het getal 65, en op de andere op een andere manier, verzonden vanaf de ene computer systeem de andere tekst wordt niet goed gelezen.

Om een ​​dergelijke naleving vast te stellen, zijn normen vereist.

De eerste stap naar standaardisatie werd gezet door het American National Standards Institute - ANSI... De ASCII-standaard ontwikkeld door het instituut - Amerikaanse standaardcode ter informatie uitwisseling (US Standard Code for Information Interchange) vult de eerste helft in codetabel:- plaatsen van 0 tot 127. Het invullen van de tweede helft van de tabel deze standaard regelt niet. Je moet de tabel van links naar rechts, van boven naar beneden lezen. In principe zijn de karakters in deze helft van de codetabel voldoende voor het programmeren in de meeste algoritmische talen.


In de code ASCII-pagina ontbrekende niet-Latijnse letters.

Internationale Organisatie voor Standaardisatie ISO stelde verschillende normen voor die opties beschrijven voor het vullen van de tweede helft van de codetabel. Bijvoorbeeld, codepagina ISO8859-1, ook wel latin1 genoemd, is handig voor de meeste op het Latijn gebaseerde Europese talen.


De geschiedenis van Cyrillische (dat wil zeggen Cyrillisch-ondersteunende) codetabellen is complex. Hun gemeenschappelijk kenmerk is dat hun eerste helften zijn gevuld in overeenstemming met ASCII, dus worden ze hier niet getoond.

Een van de oudste is blijkbaar KOI8-R, die werd geboren in de wereld van computers die onder het Unix-besturingssysteem draaien. De nogal vreemde volgorde van de Cyrillische letters heeft een verklaring. Merk op dat zeven bits voldoende zijn om ASCII-tekens weer te geven. Met andere woorden, alles ASCII-tekens gecodeerd met bytes zoals 0 *******. Het meest linkse gewiste bit in zo'n byte instellen is gelijk aan het toevoegen van 128 aan de code. Deze toevoeging heeft hetzelfde effect als het superponeren van de bovenste helft van de codetabel aan de onderkant. Omgekeerd verschuift het wissen van dit bit elk teken in de tabel met 8 regels.

Vroeger, toen bytes geen acht, maar zeven bits waren (het meest linkse bit werd gebruikt om fouten te controleren bij het overbrengen van informatie tussen computersystemen), konden karakters van de onderste helft van de pagina hun gekoesterde linkerbit kwijtraken. De KOI8-R-codering garandeerde dat dergelijke tekst min of meer leesbaar zou blijven. Als de tekst bijvoorbeeld beschadigd is, is de codepagina koDOWAQ STRANICA.

De KOI8-R-codepagina heeft een Oekraïense versie van KOI8-U, evenals een versie van KOI8-C met pre-reform Russische letters (yaty, fit, izhytsy) en letters van de Balkantalen met Cyrillische afbeeldingen.


De CP866-codepagina, ook wel de alternatieve GOST-codering genoemd, is in ons land wijdverbreid op computers met het besturingssysteem Microsoft DOS... Er was ook de zogenaamde standaard GOST-codering, maar deze werd nooit wijdverbreid, evenals de ISO8859-5-codering die door de ISO-organisatie werd voorgesteld om het Cyrillische alfabet te ondersteunen.

CP866 heeft minder problemen met: alfabetische volgorde(om nog maar te zwijgen over de lankmoedige letter Ёё, en de specifieke letters van het Oekraïense en Wit-Russische alfabet). Er is echter een vervelende opening tussen de letters n en p, gevuld met pictogrammen voor het tekenen van kaders.


De meest perfecte codepagina lijkt CP1251, voorgesteld door Microsoft voor gebruik in Microsoft Windows.


De overvloed aan verschillende codetabellen zorgt voor problemen bij het overbrengen van teksten tussen verschillende computersystemen.

Elke verzonden tekst moet vergezeld gaan van begeleidende informatie over de gebruikte codepagina.

Als de zendende en ontvangende kant verschillende codetabellen gebruiken, is transcodering noodzakelijk. Een dergelijke hercodering is niet moeilijk te programmeren, maar er moet rekening mee worden gehouden dat niet alle teksten opnieuw moeten worden gecodeerd. Bijvoorbeeld, uitvoerbare programma's mogen niet opnieuw worden gecodeerd, omdat hun samenstellende bytes niet dezelfde betekenis hebben als symbolen in een natuurlijke taal (bijvoorbeeld Russisch). Deze bytes dienen als processorinstructiecodes. Hetzelfde geldt voor andere typen binaire bestanden: bestandsarchieven, grafische, audio- en videobestanden. Bij sommige soorten bestanden (bijvoorbeeld HTML) kan informatie over de gebruikte codering in deze bestanden worden geplaatst. Om de consistentie van dergelijke bestanden te behouden, is het naast transcodering noodzakelijk om deze informatie dienovereenkomstig te corrigeren. Extra problemen ontstaan ​​als de te transcoderen bestanden in een bestandsarchief worden verpakt. In dit geval moet de ontvangende partij het archief uitpakken, de bestanden erin hercoderen en het vervolgens weer inpakken. De echte nachtmerrie ontstaat als de bestandsnamen in het archief ook opnieuw moeten worden gecodeerd (dit is een belangrijke reden om niet-ASCII-tekens in bestandsnamen te vermijden).

Vanwege verschillende coderingen verschillende tekensets kan bevatten, is het conversieproces niet altijd goed gedefinieerd. Laten we zeggen dat het - (em-streepje) teken in de CP1251-codepagina staat en niet in de CP866. Wat moet er gebeuren bij het transcoderen met een dergelijk karakter?

Ten slotte maakt het kleine formaat van de codepagina het ons ofwel onmogelijk om in één tekst alle verschillende karakters te gebruiken die door de mensheid zijn uitgevonden. Op geen van de Cyrillische codepagina's die in de vorige sectie zijn beschreven, kan bijvoorbeeld de volgende tekst worden geschreven:

* Mueller Engels-Russisch woordenboek computer _n. 1: computer; rekenapparaat; elektronische computer; computer; teller 2: degene die rekent

Lelijk maar noodzakelijk

Sommige computertalen bieden lelijke constructies waarmee u koppelingen kunt invoegen naar tekens die niet in de codering in de tekst staan. Bijvoorbeeld, een karakter entiteit - in HTML geeft een karakter aan em streepje(-); macro \ copyright in T taal EX voegt een copyrightteken (©) toe aan het document. Deze benadering houdt in dat sommige karakters in de corresponderende taal een speciale betekenis krijgen (& in HTML, \ in T EX). Als je zo'n symbool als zodanig moet aanduiden, zijn extra trucs nodig: & voor &, \ backslash voor \.

De indicator van de huidige invoertaal bevindt zich aan de rechterkant van de taakbalk (de symbolen En voor Engels, Vk voor Oekraïens en Ru voor Russisch). U kunt de invoertaal wijzigen door met de linkermuisknop op de indicator te klikken. In het menu dat dan verschijnt, klikt u met de linkermuisknop op de regel van de gewenste taal. Bovendien kunt u bij het installeren of configureren van Windows een sneltoets selecteren om de invoertaal te wijzigen (of linksAlt+ Verschuiving of Ctrl+ Verschuiving).

Er zijn drie hoofdcoderingen die worden gebruikt om tekstgegevens in Windows te coderen:

    OEM-codering;

    ANSI-codering;

    Unicode-codering.

Opdrachtregelmodus op Windows gebruikt codetabel:ASCII(American Standard Code for Information Interchange) ontwikkeld door ANSI (American National Standard Institute). De eerste helft van de tabel (tekens met decimale codes van 0 tot 127) bevat die tekens die kunnen worden ingevoerd vanaf het toetsenbord (meer precies, vanuit de symbolische zone). De tweede helft van de codetabel (tekens met decimale codes van 128 tot 255) bevat voornamelijk algemeen aanvaarde wiskundige en zogenaamde pseudografische tekens (bijvoorbeeld " " of " ") gebruikt in tekstmodus om lijnen en diagrammen te tekenen.

Veel alfabetten gebruiken echter andere letters dan 26 Latijnse letters gespecificeerd in de eerste helft van de ASCII-codetabel. Daarom zijn er ook voor deze talen codepagina's ontwikkeld. Aan elke dergelijke codepagina wordt een numeriek nummer toegewezen. Zo worden bijvoorbeeld codetabellen 850 en 852 gebruikt voor West-Europese talen en codetabel 866 voor Russische en Oekraïense talen. In deze codering hebben Cyrillische tekens de volgende codes: EN IK– 128-159 ("80 " - "9 F"),een– 160-175 ("EEN0 " - "AF"),pi– 224-239 ("E0 " - "EF"),joh– 240 ("F0 "),e– 241 ("F1 "),Є – 240 ("F2 "),є – 241 ("F3 "), Ї – 240 ("F4 "),ї – 241 ("F5 "), dat wil zeggen, ze bevinden zich op die posities waar relatief zelden gebruikte tekens worden gevonden in de ASCII-codering nationale alfabetten en Griekse letters. Voor Oekraïense letters І en і deze codering gebruikt de overeenkomstige Latijnse letters met codes 73 (" 49 ") en 105 (" 69 ").

In Windows-terminologie heet ASCII coderingOEM(Originele apparatuurfabrikant).

coderingANSI is de native codering van Windows en is speciaal ontwikkeld voor dit besturingssysteem. De eerste helft van het codeboek bevat dezelfde karakters als de eerste helft van het ASCII (OEM) codeboek, d.w.z. tekst op de Engelse taal in beide coderingen zullen er hetzelfde uitzien. De tweede helft van de ANSI-codetabel bevat ook de letters van de nationale alfabetten. De Windows-codepagina voor West-Europese alfabetten heeft het nummer 1252, en voor talen die Cyrillische letters gebruiken (inclusief Russische en Oekraïense talen) - nummer 1251. Opgemerkt moet worden dat de codes van dezelfde letters van de Russische en Oekraïense taal ​in de codepagina 866 en in de codepagina komen Windows-1251 niet overeen. Dus de letters EEN-IK BEN hebben codes 192-223 (" C0 " - "DF"),een-ik ben – 224-255 ("E0 " - "FF"),joh– 168 ("EEN8 "),e– 184 ("B8 "),Є – 170 ("AA"),є – 186 ("BA"), Ї – 175 ("AF"),ї – 191 ("vriendje"),І – 178 ("B2 "),і – 179 ("B3 "), Ґ – 165 ("EEN5 "), ґ – 180 ("B4 ").

V coderingUnicode voor elk teken worden twee bytes toegewezen. Dus, codes van letters van het Latijnse alfabet EEN-Z en een-z in hexadecimale notatie zijn respectievelijk in de bereiken " 0041 " - "005 EEN" en " 0061 " - "007 EEN". Codes van letters van het Russische alfabet EEN-IK BEN en een-ik ben bevinden zich respectievelijk in de reeksen " 0410 " - "042 F" en " 0430 " - "044 F". Uitzonderingen zijn letters joh en e wiens codes betekenen " 0401 " en " 0451 ". De letters van het Oekraïense alfabet die samenvallen met de Russische letters hebben dezelfde codes als de corresponderende Russische letters, en de letters Є , І , Ї , є , і , ї , Ґ en ґ hebben overeenkomstige codes " 0404 ", "0406 ", "0407 ", "0454 ", "0456 ", "0457 ", "0490 " en " 0491 ".

Er zijn verschillende varianten van Unicode-tekenweergave. De meest voorkomende is coderingUTF-16 , waarbij elk teken wordt weergegeven door twee bytes, en in de processor en in het computergeheugen de minst significante byte (" 00 "voor Latijnse letters of" 04 "- voor Cyrillische letters) wordt als tweede geplaatst, en de oudere - eerst, dwz de letter EEN wordt gepresenteerd als " 1004 ". Deze voorstelling wordt ook wel UTF-16 KleinEndian(minst significante byte aan het einde). Deze weergave wordt gebruikt in Intel-processors en wordt vaak het Intel-formaat genoemd.

in codering UTF-16 GrootEndian(hoge byte aan het einde) de lage byte is de eerste, de hoge orde is de tweede, d.w.z. brief EEN wordt gepresenteerd als " 0410 "Deze gegevensrepresentatie wordt gebruikt in de Motorola- en PowerPC-processors en respectievelijk in Apple-computers die deze processors gebruiken (recentelijk zijn er Apple-computers op basis van Intel-processors verschenen).

UTF-8-indeling ontworpen om de hoeveelheid invoer- en uitvoergegevens te verminderen. Gegevens in dit formaat worden weergegeven volgens het volgende algoritme:

    Unicode-tekens in het bereik " 0000 " - "007 F"(de eerste 128 tekens) worden in één byte geschreven (de meest significante byte wordt weggegooid);

    Unicode-tekens in het bereik " 0080 " - "07 FF"(de letters van de meest voorkomende nationale alfabetten) worden als volgt in twee bytes geschreven: Unicode-teken met binaire codering 00000 xxxxyyyyyy(waar x en ja0 of 1 ) wordt geconverteerd naar het formulier 110 xxxx10 yyyyyy;

    Unicode-tekens in het bereik " 0800 " - "ffff"worden als volgt in drie bytes geschreven: Unicode-teken met binaire codering xxxxyyyyyyzzzzzz(waar x,ja en z0 of 1 ) wordt geconverteerd naar het formulier 1110 xxxx10 yyyyyy10 zzzzz.

Om een ​​teksteditor te laten bepalen welke van de Unicode-coderingen wordt gebruikt voor de inhoud, wordt het teken helemaal aan het begin van het bestand geplaatst byte-volgordemarkeringenstuklijst(ByteOrderMark). Het is ofwel het symbool " FFFE"(voor UTF-16-codering), of het teken" FEFF"(voor UnicodeBigEndian-codering), of het teken" EFBBBF"(voor UTF-8-codering).

Er zijn ook andere coderingen om de letters van het Russische en Oekraïense alfabet weer te geven:

    Unix-codering (KOI8-R codetabel voor Russisch en een aparte codetabel voor Oekraïens, soms KOI8-U genoemd);

    codering Apple Macintosh(MacCyrillic-codepagina);

    internationale Cyrillische codering ISO8859-5 (relatieve tekencodering in deze codering komt overeen met Unicode-codering).

U kunt de tekencoderingen bekijken die in verschillende lettertypen worden gebruikt met behulp van de tekentabel van de Windows-systeemtoepassing. U kunt deze applicatie starten in het submenu Hulpprogramma's, dat zich in het submenu Standaard van het hoofdmenu bevindt. De keuze van het lettertype in het dialoogvenster van deze applicatie wordt gemaakt in het veld Lettertype. Als u de cursor naar een willekeurig lettertype naast het frame verplaatst, wordt de code van dit teken en zijn naam weergegeven. Als u op een symbool klikt en op de knop Selecteren drukt, wordt het geselecteerde symbool overgebracht naar het veld Naar kopiëren van het dialoogvenster. Tekens die in dit veld zijn geselecteerd, kunnen naar elke toepassing worden gekopieerd met de knop Kopiëren. U kunt deze functie gebruiken om tekens in tekst in te voegen die niet op het toetsenbord staan ​​(bijvoorbeeld Griekse letters of wiskundige symbolen).

Met Kladblok kunt u tekst in alle drie de coderingen (OEM, ANSI of Unicode) openen, bekijken en bewerken, maar u moet het juiste lettertype installeren via het menu FontFormat. Lettertype is geïnstalleerd voor OEM-codering Terminal, en voor ANSI- of Unicode-coderingen kunt u elk lettertype van het type instellen TrueType(met het icoon) of Open type(met het pictogram), bijvoorbeeld KeerNieuwRomeins,Arial,Verdana of KoerierNieuw.

Een OEM-gecodeerd tekstbestand dat in de Kladblok-editor is geopend, kan alleen in die codering worden opgeslagen. ANSI- of Unicode-tekst kan worden opgeslagen in een van de volgende coderingen: ANSI, UTF-16, UTF-16BigEndian en UTF-8. Om dit te doen, selecteert u in het dialoogvenster van de opdracht Opslaan als in het menu Bestand de juiste waarde in het veld Codering: ANSI,Unicode,UnicodeGrootEndian of UTF-8 ... Tekst in de Kladblok-editor wordt standaard opgeslagen in ANSI-codering.

De Kladblok-editor staat het converteren van bestandsinhoud van OEM-codering naar ANSI-codering niet toe, evenals het uitvoeren van omgekeerde conversie. Om dit te doen, kunt u de opdrachtshell gebruiken of gebruiken Ver, of gebruik de editor Word (deze functie wordt besproken in Lab 1-07).

In de Far-opdrachtshell moet u eerst op de bestandsnaam in OEM-codering klikken en op de toets drukken F4 (bestand bewerken). In het editorvenster, met behulp van de toetsen Ctrl+EEN de inhoud van het hele bestand wordt gemarkeerd en gebruik vervolgens de toetsen Ctrl+C de inhoud van het bestand wordt naar het klembord gekopieerd. Verlaat de editor met de toets Esc.

Gebruik daarna het commando

kopiërentegenhoudenBestandsnaam. tekst

is gecreëerd nieuw bestand, waarbij de toets onmiddellijk wordt ingedrukt F6 en sleutel Binnenkomen.Als de bestandsnaam spaties bevat, moet deze tussen dubbele aanhalingstekens staan.

Dan wordt het geopend (met behulp van de sleutel F4 ) ontvangen leeg bestand en daarin met behulp van de schakelaar F8 de codering is ingesteld op Windows (de waarde van de coderingsmodus in de eerste regel van de editor moet zijn Winnen) en de inhoud van het klembord worden naar het bestand gekopieerd met de toetsen Ctrl+V... De inhoud van het bestand in de editor wordt opgeslagen met de toets F2 .

Soms is het nodig om de inhoud van een bestand rechtstreeks in hexadecimaal te bekijken, waarbij elke byte wordt weergegeven als twee hexadecimale cijfers... Deze functie wordt geleverd door veel shells (bijvoorbeeld Far of Total Commander). Bovendien is er een hele klasse teksteditors genaamd HEX-Editors speciaal ontworpen voor het bekijken en wijzigen van de inhoud van bestanden, schijven en RAM.

Om de inhoud van een tekstbestand in Far te bekijken, klikt u op de bestandsnaam en drukt u op de toets F3 (bestand bekijken). Om de inhoud in hexadecimaal weer te geven, drukt u op en vervolgens op F4 (deze toets schakelt de weergavemodus van tekst naar hexadecimaal en vice versa).

Het eerste grote probleem waarmee de meeste nieuwkomers worden geconfronteerd, is de karakterset. karakterset). Dit probleem met de codering wordt uitgedrukt in de zogenaamde "krakozyabriki", die we ontvangen in plaats van de tekens die in het HTML-bestand zijn opgegeven. In dit artikel wil ik dieper ingaan op het probleem met codering, proberen alles in de schappen te leggen en oplossingen te geven.

  • Wat is coderen?
  • Bestandscodering (bewerken in Kladblok ++)
  • Weergavecodering (bekijken in browser)
  • Hoe geef ik de codering van een HTML-pagina op? (tekenset-metatag)
  • Nog steeds een probleem met de codering? (header-tekenset in php)

Wat is coderen?

Relatief gezien, elke symbool(teken) bestaat uit code en Afbeeldingen... Hier code is een unieke identificatie voor een teken in een tekenset, die wordt bepaald door de geselecteerde codering, een afbeelding is een visuele weergave van een symbool dat is opgenomen in lettertypebestand in de cel die overeenkomt met de tekencode.

Met andere woorden, codering(eng. tekenset) is een reeks relaties tekencodes van hun visuele representaties in lettertype.

Bestandscodering

HTML-pagina is normaal tekstbestand waarvan de codering wordt geselecteerd wanneer deze wordt gemaakt en/of opgeslagen op een opslagapparaat (HDD, flashstation, enz.).

In het geval van Notepad ++ wordt de codering van het nieuwe document ingesteld in de instellingen tekstverwerker... Kies uit het menu: Opties> Instellingen ...- en ga naar het tabblad " nieuw document ". Hier zijn we geïnteresseerd in de rubriek “ codering". Standaard is de codering geselecteerd ANSI.

Laat me je eraan herinneren dat dit de codering is waarin het HTML-bestand wordt opgeslagen.

U kunt echter altijd converteren codering HTML-pagina's met behulp van de juiste teksteditorfuncties. Klik hiervoor bijvoorbeeld in Kladblok ++ op het menu-item " Coderingen»En selecteer de gewenste transformatie.

V in dit geval het bestand is gecodeerd ANSI en ik heb het omgezet naar UTF-8(geen stuklijst). Wat deze stuklijst is, kunt u lezen in mijn artikel: PHP: hoe een stuklijst te verwijderen in WordPress - vervolg.

Weergavecodering

Het is belangrijk om te delen bestandscodering en codering weergeven:... Ongeacht in welke codering het bestand is opgeslagen, het kan in elke andere codering worden weergegeven. Dit is een van de redenen voor de coderingsproblemen.

Als u bijvoorbeeld een HTML-pagina heeft opgeslagen met de codering ANSI en open het in een browser, in plaats van Russische karakters kun je de zogenaamde "krakozyabriki" krijgen.

In dit geval moeten we ervoor zorgen dat: bestandscodering valt samen met codering weergeven: bestand in de browser. Om dit te doen, klikt u in Firefox op het menupictogram en vervolgens op het item " codering". Als je er geen hebt, klik dan op het item " Wijziging"En voeg het element toe" codering" op het menu.

Zoals u kunt zien, geeft de browser het bestand weer in de codering " Unicode» (bijvoorbeeld, UTF-8) , terwijl het bestand is opgeslagen in de codering ANSI (bijvoorbeeld, Windows-1251) ... Nadat we de gewenste codering hebben gekozen, krijgen we het gewenste resultaat.

In het geval van Notepad ++ is het ook mogelijk om de weergavecodering te selecteren. Klik hiervoor op het menu-item " Coderingen", en dan gewenste optie gebruikt om de codering weer te geven.

In dit geval heb ik de weergavecodering gewijzigd ANSI Aan UTF-8(geen stuklijst).

Hoe geef ik de codering van een HTML-pagina op?

En dus hebben we al ontdekt wat codering is en wat het verschil is tussen bestandscodering en weergavecodering. Nu moeten we het probleem met de codering oplossen, namelijk: verkeerde interpretatie browser (of een andere klant) HTML-paginacoderingen.

Waarom zijn er problemen met de codering? Het bepalen van de codering van een HTML-pagina is niet eenvoudig, en vaak niet mogelijk, omdat dezelfde browser heeft er geen informatie over of het wordt verkeerd aangegeven.

Een speciale metatag wordt gebruikt om de codering van een HTML-pagina aan te geven. In HTML5 ziet het er als volgt uit:

In dit geval wordt de codering aangegeven UTF-8(Unicode).

in oudere HTML-versies deze metatag ziet er als volgt uit:

Deze metatag creëert een Content-Type HTTP-header die het documenttype text/html en de Windows-1251 (ANSI)-codering specificeert.

Persoonlijk raad ik aan om deze specifieke optie te gebruiken, omdat: met hem zullen de minste problemen zijn. Het belangrijkste is dat zo'n metatag aanwezig is in de HEAD-sectie en dat de daarin gespecificeerde codering overeenkomt met de bestandscodering. In de meeste gevallen zal dit voldoende zijn.

Nog steeds een probleem met de codering?

In sommige gevallen is het opgeven van een HTML-gecodeerde metatag niet voldoende. Dit probleem kan worden veroorzaakt door de instellingen van de server zelf, die het HTML-paginabestand host. Het feit is dat de server in staat is om de mijne De Content-Type HTTP-header, die relatief voorrang heeft op de metatag.

In dit geval kan dit probleem worden opgelost door wijzigingen aan te brengen in de serverinstellingen. Ik zal niet in details treden dit probleem en ik zou alleen aanraden om al deze transcodering via een bestand uit te schakelen .htaccess, bijvoorbeeld:

CharsetUitschakelen Uit

U kunt ook wijzigingen aanbrengen in de Content-Type HTTP-header en door software... In dezelfde PHP wordt hiervoor de functie header () gebruikt, bijvoorbeeld:

header ("Inhoudstype: tekst / html; charset = UTF-8");

Ik vestig uw aandacht op het feit dat het specificeren van de HTTP-headers moet gaan voordat informatie op het scherm weergeven, anders krijgt u een foutmelding.

In een computer wordt alle informatie in digitale vorm opgeslagen. De computer begrijpt niets meer dan cijfers. Afbeeldingen, muziek, video en tekst, programma's, games en zelfs virussen voor een computer zijn niets meer dan een reeks getallen. Cijfers en alleen cijfers. Wanneer u op een toets op het toetsenbord drukt, ontvangt de computer de numerieke code die bij die toets hoort. Omdat er letters, cijfers of iets anders op de sleutel zijn getekend, kunnen we zeggen dat een bepaalde digitale code overeenkomt met een bepaalde letter of symbool. Bij weergave op het scherm tekent de computer een letter of symbool, afhankelijk van de digitale code. Dat wil zeggen, als de digitale code overeenkomt met de letter W, dan tekent de computer deze. Als de correspondentie van de karakters met de digitale code in de tabel wordt geschreven, dan krijgen we codepagina... Een codetabel is een tabel die numerieke (binaire) tekens of tekencodes die door toepassingen worden gebruikt, associeert met toetsen op een toetsenbord of de weergave van tekens op een scherm. Codepagina's bieden ondersteuning voor verschillende talen. Elke codepagina heeft zijn eigen nummer. De codetabel voor Arabische tekens is bijvoorbeeld cp1256 en voor Cyrillische tekens cp1251. Gewoonlijk kan slechts één codetabel tegelijk worden gebruikt. Als u de taal moet wijzigen, moet u ook de codepagina wijzigen. Dit komt door de beperkte afmeting van de tafel. Als de tekst nu is getypt met één codetabel (of in één codering), en ze proberen deze te lezen met een andere codepagina (of in een andere codering), dan zal er hoogstwaarschijnlijk niets van komen, omdat de digitale codes zal overeenkomen met totaal verschillende tekens of tekens en helemaal niet vergelijkbaar met de originele. Daardoor zien we gebrabbel of iets dergelijks. Uit dit alles komt de eenvoudige regel dat: je moet lezen met dezelfde codepagina die werd gebruikt bij het invoeren van leesbare tekst... Of gebruik een programma dat van de ene codering naar de andere kan hercoderen. Nu kan dit door de meeste teksteditors worden gedaan, en bijvoorbeeld in Microsoft Internet Explorer kan de codering worden gewijzigd door met de rechtermuisknop te klikken en "Codering" te selecteren. Om de beperking op het aantal linguïstische karakters in een codepagina op te heffen, heeft het Unicode-consortium een ​​karaktercoderingsstandaard ontwikkeld waarmee bijna alle talen van de wereld in één karakterset kunnen worden weergegeven. En deze standaard wordt stilaan meer en meer gebruikt.

Talen => Coderingsstandaarden

Meertalig / Unicode / Andere tekenset => UCS-2 little-endian en big-endian, UTF-8, UTF-7 Arabisch => Windows 1256, ASMO 708 Vereenvoudigd Chinees => GB2312, GBK, EUC-CN, ISO-2022 -CN, HZ Traditioneel Chinees => BIG5, EUC-TW, ISO-2022-TW Cyrillisch => Windows 1251, KOI8-R, KOI8-RU, ISO8859-5, DOS 866 Engels / West-Europees / Overige Latijnse tekenset => Windows 1250, 1252-1254, 1257, ISO8859-x Grieks => Windows 1253 Hebreeuws => Windows 1255 Japans => Shift-JIS, ISO-2022-JP (JIS), EUC-JP Koreaans => Wansung , Johab, ISO- 2022-KR, EUC-KR Thai => Windows 874 Vietnamees => Windows 1258 Indiase talen => ISCII (Indian Script Code for Information Interchange)

Historisch gezien werden in de eerste computers 7 bits toegewezen om gedrukte karakters (coderingstekst) weer te geven. 2 7 = 128. Dit bedrag was voldoende om alle kleine letters en hoofdletters van het Latijnse alfabet, tien cijfers en verschillende tekens en haakjes te coderen. Deze 7-bit is precies de ASCII-tekentabel (American Standard Code for Information Interchange), waarin u gedetailleerde informatie kunt krijgen over het gebruik van het man ascii-commando van het Linux-besturingssysteem.

Toen het nodig werd om nationale alfabetten te coderen, waren 128 tekens niet genoeg. Besloten werd om over te schakelen op codering met 8 bits (dus één byte). Als gevolg hiervan werd het aantal tekens dat op deze manier kan worden gecodeerd gelijk aan 28 = 256. In dit geval bevonden de symbolen van de nationale alfabetten zich in de tweede helft van de codetabel, dat wil zeggen dat ze een eenheid bevatten in de meest significante bit van de byte die was toegewezen voor het coderen van het teken. Zo verscheen de ISO 8859-standaard, die veel coderingen bevat voor de meest voorkomende talen.

Onder hen was een van de eerste tabellen voor het coderen van Russische letters - ISO 8859-5(gebruik het commando man iso_8859_1 om de codes voor Russische letters in deze tabel te krijgen).

De taken van het verzenden van tekstuele informatie over het netwerk dwongen de ontwikkeling van een andere codering voor Russische letters, genaamd Koi8-R(informatieweergavecode is 8-bit, gerussificeerd). Denk aan een situatie waarin een brief met Russische tekst per e-mail wordt verzonden. Het gebeurde dat tijdens het reizen door netwerken een brief werd verwerkt door een programma dat werkte met een 7-bits codering en de achtste bit op nul zette. Als gevolg van deze transformatie werd de tekencode met 128 verminderd en veranderde in de tekencode van het Latijnse alfabet. Er was behoefte om de stabiliteit van de verzonden tekstinformatie te verhogen tot 8 bits op nul.

Gelukkig heeft een aanzienlijk aantal Cyrillische letters fonetische tegenhangers in het Latijnse alfabet. Bijvoorbeeld Ф en F, P en R. Er zijn verschillende letters die zelfs in omtrek overeenkomen. Russische letters in de codetabel zo rangschikken dat hun code de code overschrijdt vergelijkbaar Latijn naar het getal 128, bereikten ze dat het verlies van de 8e bit de tekst veranderde, hoewel het uit één Latijns alfabet bestond, maar nog steeds werd begrepen door de Russisch sprekende gebruiker.

Aangezien van alle besturingssystemen die destijds wijdverbreid waren, verschillende klonen van het Unix-besturingssysteem de handigste manier bezaten om met het netwerk te werken, werd deze codering de de facto standaard in deze systemen. Dit is nog steeds het geval in Linux. En het is deze codering die het vaakst wordt gebruikt om e-mail en nieuws op internet uit te wisselen.

Toen kwam het tijdperk van personal computers en het MS DOS-besturingssysteem. Het bleek dat de Koi8-R-codering niet geschikt was voor haar (net als ISO 8859-5), in haar tabel stonden enkele Russische letters op die plaatsen die veel programma's aannamen gevuld met pseudo-graphics (horizontale en verticale lijnen, hoeken, enz. .) enz.). Daarom werd een andere codering van het Cyrillische alfabet uitgevonden, in de tabel waarvan Russische letters van alle kanten "vloeiden" naar grafische symbolen. Deze codering genoemd alternatief(alt) omdat het een alternatief was voor de officiële standaard, ISO-8859-5-codering. Het onbetwistbare voordeel van deze codering is dat de Russische letters erin in alfabetische volgorde zijn gerangschikt.

Na het verschijnen van het Windows-besturingssysteem van Microsoft, bleek de alternatieve codering om de een of andere reden er niet geschikt voor. Door de Russische letters opnieuw in de tabel te plaatsen (er was een mogelijkheid - pseudo-graphics in Windows zijn immers niet vereist), we kregen de codering Windows 1251(Win-1251).

Maar computertechnologieën worden voortdurend verbeterd en op dit moment beginnen steeds meer programma's de Unicode-standaard te ondersteunen, waarmee u bijna alle talen en dialecten van de bewoners van de aarde kunt coderen.

Dus in verschillende besturingssystemen wordt de voorkeur gegeven aan verschillende coderingen. Om het lezen en bewerken van tekst die in een andere codering is getypt mogelijk te maken, worden Russische teksttranscoderingsprogramma's gebruikt. Sommige teksteditors bevatten ingebouwde transcoders waarmee u tekst in verschillende coderingen (Word, enz.) kunt lezen. Om bestanden te converteren, zullen we een aantal hulpprogramma's in Linux gebruiken, waarvan het doel duidelijk is uit de naam: alt2koi, win2koi, koi2win, alt2win, win2alt, koi2alt (vanwaar, waar, het getal 2 (twee) is vergelijkbaar in geluid naar het voorzetsel to, waarmee de richting wordt aangegeven). Deze commando's hebben dezelfde syntaxis: commando<входной_файл >uitvoer_bestand.

Voorbeeld

Laten we de tekst die in de Edit-editor in de MS DOS-omgeving is getypt, hercoderen naar de Koi8-R-codering. Voer hiervoor het commando . uit

alt2koi file1.txt> filenew

Aangezien regelfeeds anders zijn gecodeerd in MS DOS en Linux, wordt ook aanbevolen om de opdracht "fromdos" uit te voeren:

fromdos filenew> file2.txt

Het omgekeerde commando heet "todos" en heeft dezelfde syntax.

Voorbeeld

Laten we het List.txt-bestand sorteren dat een lijst met achternamen bevat en is voorbereid in de Koi8-R-codering in alfabetische volgorde. Laten we het sort-commando gebruiken, dat het tekstbestand sorteert in oplopende of aflopende volgorde van tekencodes. Als je het meteen toepast, dan is bijvoorbeeld de letter V staat aan het einde van de lijst, vergelijkbaar met de corresponderende letter van het Latijnse alfabet V... Onthoud dat in de alternatieve codering de Russische letters strikt alfabetisch zijn gerangschikt, zullen we een aantal bewerkingen uitvoeren: de tekst hercoderen in een alternatieve codering, deze sorteren en terugsturen naar de Koi8-R-codering. Met behulp van de opdrachtpijplijn krijgen we

koi2alt List.txt | sorteren | alt2koi> List_Sort.txt

In moderne Linux-distributies zijn veel van de problemen die verband houden met lokalisatie software. In het bijzonder houdt het sorteerprogramma nu rekening met de eigenaardigheden van de Koi8-R-codering, en om het bestand in alfabetische volgorde te sorteren, voert u gewoon de opdracht uit