Koi-kodning 8 bord. Vad är KOI8-R-kodningen och vad gav den? Används Chernoff-kodning för närvarande?


Hej kära läsare av bloggsidan. Idag ska vi prata med dig om var krakozyabrs kommer ifrån på en webbplats och i program, vilka textkodningar som finns och vilka som ska användas. Låt oss ta en närmare titt på historien om deras utveckling, med början från grundläggande ASCII, såväl som dess utökade versioner CP866, KOI8-R, Windows 1251 och slutar med moderna Unicode-konsortiumkodningar UTF 16 och 8.

För vissa kan denna information tyckas onödig, men skulle du veta hur många frågor jag får specifikt angående de krypande krakozyabrerna (oläsbar uppsättning tecken). Nu kommer jag att ha möjlighet att hänvisa alla till texten i denna artikel och hitta mina egna misstag. Nåväl, gör dig redo att ta till dig informationen och försök att följa berättelsens flöde.

ASCII - grundläggande textkodning för det latinska alfabetet

Utvecklingen av textkodningar skedde samtidigt med bildandet av IT-branschen, och under denna tid lyckades de genomgå en hel del förändringar. Historiskt började allt med EBCDIC, som var ganska dissonant i ryskt uttal, vilket gjorde det möjligt att koda bokstäver i det latinska alfabetet, arabiska siffror och skiljetecken med kontrolltecken.

Men ändå bör utgångspunkten för utvecklingen av moderna textkodningar anses vara den berömda ASCII(American Standard Code for Information Interchange, som på ryska vanligtvis uttalas som "fråga"). Den beskriver de första 128 tecknen som oftast används av engelsktalande användare - , arabiska siffror och skiljetecken.

Dessa 128 tecken som beskrivs i ASCII inkluderade även vissa tjänstecken som parenteser, hash-tecken, asterisker, etc. Faktum är att du kan se dem själv:

Det är dessa 128 tecken från originalversionen av ASCII som har blivit standarden, och i vilken annan kodning som helst kommer du definitivt att hitta dem och de kommer att visas i denna ordning.

Men faktum är att med en byte av information kan du koda inte 128, utan så många som 256 olika värden (två i styrkan av åtta är lika med 256), så efter grundversionen av Asuka en hel serie av utökade ASCII-kodningar, där det, förutom 128 grundläggande tecken, också var möjligt att koda symboler för den nationella kodningen (till exempel ryska).

Här är det nog värt att säga lite mer om de nummersystem som används i beskrivningen. För det första, som ni alla vet, fungerar en dator bara med siffror i det binära systemet, nämligen med nollor och ettor ("Boolesk algebra", om någon tog det på ett institut eller en skola). , som var och en är en tvåa i potensen, med början från noll och upp till två till den sjunde:

Det är inte svårt att förstå att alla möjliga kombinationer av nollor och ettor i en sådan design bara kan vara 256. Att konvertera ett tal från det binära systemet till decimalsystemet är ganska enkelt. Du behöver bara lägga ihop alla krafter av två med en över dem.

I vårt exempel visar sig detta vara 1 (2 i potensen noll) plus 8 (två i potensen av 3), plus 32 (två till femte potensen), plus 64 (till den sjätte potensen), plus 128 (till sjunde potensen). Summan är 233 i decimalnotation. Som du kan se är allt väldigt enkelt.

Men om du tittar noga på tabellen med ASCII-tecken kommer du att se att de är representerade i hexadecimal kodning. Till exempel motsvarar "asterisk" det hexadecimala talet 2A i Aski. Du vet säkert att i det hexadecimala talsystemet, förutom arabiska siffror, används även latinska bokstäver från A (betyder tio) till F (betyder femton).

Jo då, för konvertera binärt tal till hexadecimalt ta till följande enkla och uppenbara metod. Varje byte med information är uppdelad i två delar om fyra bitar, som visas i skärmdumpen ovan. Den där. I varje halvbyte kan endast sexton värden (två till fjärde potens) kodas i binärt, vilket enkelt kan representeras som ett hexadecimalt tal.

Dessutom, i den vänstra halvan av byten kommer graderna att behöva räknas igen från noll, och inte som visas på skärmdumpen. Som ett resultat får vi genom enkla beräkningar att talet E9 är kodat i skärmdumpen. Jag hoppas att mitt resonemang och lösningen på detta pussel var tydlig för dig. Nåväl, låt oss nu fortsätta, faktiskt, prata om textkodningar.

Utökade versioner av Asuka - CP866 och KOI8-R-kodningar med pseudografi

Så vi började prata om ASCII, som så att säga var utgångspunkten för utvecklingen av alla moderna kodningar (Windows 1251, Unicode, UTF 8).

Från början innehöll den bara 128 tecken i det latinska alfabetet, arabiska siffror och något annat, men i den utökade versionen blev det möjligt att använda alla 256 värden som kan kodas i en byte med information. De där. Det blev möjligt att lägga till symboler för bokstäver i ditt språk till Aski.

Här kommer vi att behöva avvika igen för att förklara - varför behöver vi kodningar överhuvudtaget? texter och varför det är så viktigt. Tecknen på din datorskärm bildas på grundval av två saker - uppsättningar av vektorformer (representationer) av olika tecken (de finns i filer med ) och kod som låter dig dra ut från denna uppsättning vektorformer (teckensnittsfil ) exakt det tecken som måste infogas på rätt plats.

Det är tydligt att typsnitten själva är ansvariga för vektorformerna, men operativsystemet och programmen som används i det står för kodningen. De där. all text på din dator kommer att vara en uppsättning byte, som var och en kodar ett enda tecken i just denna text.

Programmet som visar denna text på skärmen (textredigerare, webbläsare, etc.), när koden analyseras, läser kodningen av nästa tecken och letar efter motsvarande vektorform i den önskade teckensnittsfilen, som är ansluten för att visa detta textdokument. Allt är enkelt och banalt.

Detta innebär att för att koda alla tecken vi behöver (till exempel från det nationella alfabetet) måste två villkor vara uppfyllda - vektorformen för detta tecken måste vara i det teckensnitt som används och detta tecken kan kodas i utökade ASCII-kodningar i en byte. Därför finns det en hel massa sådana alternativ. Bara för att koda ryska tecken finns det flera varianter av utökade Aska.

Till exempel dök ursprungligen upp CP866, som hade förmågan att använda tecken från det ryska alfabetet och var en utökad version av ASCII.

De där. dess övre del sammanföll helt med den grundläggande versionen av Aska (128 latinska tecken, siffror och annat skit), som presenteras i skärmdumpen precis ovan, men den nedre delen av tabellen med CP866-kodning hade det utseende som anges i skärmdumpen precis nedanför och tillät dig att koda ytterligare 128 tecken (ryska bokstäver och alla sorters pseudografi):

Du ser, i den högra kolumnen börjar siffrorna med 8, eftersom... siffror från 0 till 7 hänvisar till den grundläggande delen av ASCII (se första skärmdumpen). Den där. Den ryska bokstaven "M" i CP866 kommer att ha koden 9C (den ligger i skärningspunkten mellan motsvarande rad med 9 och kolumn med numret C i det hexadecimala talsystemet), som kan skrivas i en byte med information, och om det finns ett lämpligt typsnitt med ryska tecken kommer denna bokstav utan problem att visas i texten.

Var kom denna summa ifrån? pseudografi i CP866? Hela poängen är att denna kodning för rysk text utvecklades tillbaka under de lurviga åren när grafiska operativsystem inte var så utbredda som de är nu. Och i Dosa och liknande textoperativsystem gjorde pseudografin det möjligt att åtminstone på något sätt diversifiera utformningen av texter, och därför finns det gott om CP866 och alla dess andra kamrater från kategorin utökade versioner av Asuka.

CP866 distribuerades av IBM, men utöver detta utvecklades ett antal kodningar för ryska tecken, till exempel kan samma typ (extended ASCII) tillskrivas KOI8-R:

Principen för dess funktion förblir densamma som för CP866 som beskrevs lite tidigare - varje tecken i text kodas av en enda byte. Skärmdumpen visar den andra halvan av KOI8-R-tabellen, eftersom den första halvan är helt förenlig med den grundläggande Asuka, som visas i den första skärmdumpen i den här artikeln.

Bland funktionerna i KOI8-R-kodningen kan det noteras att de ryska bokstäverna i dess tabell inte är i alfabetisk ordning, som de till exempel gjorde det i CP866.

Om du tittar på den allra första skärmdumpen (av den grundläggande delen, som ingår i alla utökade kodningar), kommer du att märka att i KOI8-R finns ryska bokstäver i samma celler i tabellen som motsvarande bokstäver i det latinska alfabetet från den första delen av tabellen. Detta gjordes för att underlätta att byta från ryska till latinska tecken genom att bara kassera en bit (två till sjunde potens eller 128).

Windows 1251 - den moderna versionen av ASCII och varför sprickorna kommer ut

Den fortsatta utvecklingen av textkodningar berodde på att grafiska operativsystem blev populära och behovet av att använda pseudografi i dem försvann med tiden. Som ett resultat uppstod en hel grupp som i huvudsak fortfarande var utökade versioner av Asuka (ett tecken av text är kodat med bara en byte information), men utan användning av pseudografiska symboler.

De tillhörde de så kallade ANSI-kodningarna, som utvecklades av American Standards Institute. I vanligt språkbruk användes även namnet kyrilliska för versionen med ryska språkstöd. Ett exempel på detta skulle vara.

Det skilde sig positivt från de tidigare använda CP866 och KOI8-R genom att platsen för pseudografiska symboler i den togs av de saknade symbolerna i rysk typografi (förutom accentmärket), såväl som symboler som används på slaviska språk nära till ryska (ukrainska, vitryska, etc.):

På grund av ett sådant överflöd av ryska språkkodningar, hade teckensnittstillverkare och programvarutillverkare ständigt huvudvärk, och du och jag, kära läsare, blev ofta ökända krakozyabry när det fanns förvirring med den version som används i texten.

Mycket ofta kom de ut när de skickade och tog emot meddelanden via e-post, vilket innebar skapandet av mycket komplexa konverteringstabeller, som faktiskt inte kunde lösa detta problem i grunden, och användare använde ofta för korrespondens för att undvika de ökända jipponen när de använde Ryska kodningar som CP866, KOI8-R eller Windows 1251.

Faktum är att sprickorna som uppträdde istället för den ryska texten var resultatet av felaktig användning av kodningen av detta språk, vilket inte motsvarade det som textmeddelandet ursprungligen kodades i.

Låt oss säga att om du försöker visa tecken kodade med CP866 med hjälp av Windows 1251-kodtabellen, kommer samma skratt (en meningslös uppsättning tecken) att komma ut och helt ersätta texten i meddelandet.

En liknande situation uppstår väldigt ofta på forum eller bloggar, när text med ryska tecken av misstag sparas i fel kodning som används på webbplatsen som standard, eller i fel textredigerare, vilket lägger till gags i koden som inte är synliga för det blotta ögat.

Till slut tröttnade många på den här situationen med mycket kodningar och ständigt smygande skit, och förutsättningarna dök upp för skapandet av en ny universell variant som skulle ersätta alla befintliga och slutligen lösa problemet med utseendet av oläsliga texter. Dessutom fanns det problemet med språk som kinesiska, där det fanns mycket fler språktecken än 256.

Unicode - universella kodningar UTF 8, 16 och 32

Dessa tusentals tecken i den sydostasiatiska språkgruppen kunde omöjligt beskrivas i en byte med information som tilldelades för att koda tecken i utökade versioner av ASCII. Som ett resultat skapades ett konsortium kallat Unicode(Unicode - Unicode Consortium) i samarbete med många ledare inom IT-branschen (de som producerar mjukvara, som kodar hårdvara, som skapar typsnitt), som var intresserade av uppkomsten av en universell textkodning.

Den första varianten som släpptes under Unicode-konsortiets överinseende var UTF 32. Siffran i kodningsnamnet betyder antalet bitar som används för att koda ett tecken. 32 bitar är lika med 4 byte information som kommer att behövas för att koda ett enda tecken i den nya universella UTF-kodningen.

Som ett resultat kommer samma fil med text kodad i den utökade versionen av ASCII och i UTF-32, i det senare fallet, ha en storlek (väga) fyra gånger större. Detta är dåligt, men nu har vi möjlighet att koda med hjälp av YTF ett antal tecken lika med två till trettio sekunders potens ( miljarder tecken, som kommer att täcka alla verkligt nödvändiga värden med en kolossal marginal).

Men många länder med språk i den europeiska gruppen behövde inte alls använda ett så stort antal tecken i kodning, men när de använde UTF-32 fick de utan anledning en fyrfaldig ökning av vikten av textdokument, och som ett resultat en ökning av volymen Internettrafik och volym lagrad data. Detta är mycket, och ingen hade råd med sådant avfall.

Som ett resultat av utvecklingen av Unicode, UTF-16, som visade sig vara så framgångsrik att den antogs som standard som basutrymme för alla tecken som vi använder. Den använder två byte för att koda ett tecken. Låt oss se hur den här saken ser ut.

I Windows operativsystem kan du följa sökvägen "Start" - "Program" - "Tillbehör" - "Systemverktyg" - "Teckentabell". Som ett resultat kommer en tabell att öppnas med vektorformerna för alla teckensnitt som är installerade på ditt system. Om du väljer Unicode-teckenuppsättningen i "Avancerade alternativ", kommer du att kunna se för varje teckensnitt separat hela intervallet av tecken som ingår i det.

Förresten, genom att klicka på någon av dem kan du se dess två-byte kod i UTF-16-format, bestående av fyra hexadecimala siffror:

Hur många tecken kan kodas i UTF-16 med 16 bitar? 65 536 (två i styrkan av sexton), och detta är numret som antogs som basutrymme i Unicode. Dessutom finns det sätt att koda cirka två miljoner tecken med den, men de var begränsade till ett utökat utrymme på en miljon tecken text.

Men även denna framgångsrika version av Unicode-kodningen gav inte mycket tillfredsställelse för dem som skrev, säg, program bara på engelska, för för dem, efter övergången från den utökade versionen av ASCII till UTF-16, fördubblades vikten av dokument ( en byte per tecken i Aski och två byte för samma tecken i YUTF-16).

Det var just för att tillfredsställa allt och alla i Unicode-konsortiet som man beslutade att ta fram kodning med variabel längd. Den kallades UTF-8. Trots åtta i sitt namn har den faktiskt en variabel längd, d.v.s. Varje tecken i text kan kodas till en sekvens på en till sex byte lång.

I praktiken använder UTF-8 bara omfånget från en till fyra byte, eftersom bortom fyra byte kod är det inte längre ens teoretiskt möjligt att föreställa sig någonting. Alla latinska tecken i den är kodade till en byte, precis som i den gamla goda ASCII.

Vad som är anmärkningsvärt är att när det gäller kodning av endast det latinska alfabetet, kommer även de program som inte förstår Unicode fortfarande att läsa det som är kodat i YTF-8. De där. kärndelen av Asuka överfördes helt enkelt till denna skapelse av Unicode-konsortiet.

Kyrilliska tecken i UTF-8 är kodade i två byte, och till exempel georgiska tecken kodas i tre byte. Unicode-konsortiet, efter att ha skapat UTF 16 och 8, löste huvudproblemet - nu har vi teckensnitt har ett enda kodutrymme. Och nu kan deras tillverkare bara fylla den med vektorformer av texttecken baserat på deras styrkor och förmågor. Nu kommer de till och med i set.

I "Teckentabellen" ovan kan du se att olika teckensnitt stöder olika antal tecken. Vissa Unicode-rika teckensnitt kan vara ganska tunga. Men nu skiljer de sig inte i det faktum att de skapades för olika kodningar, utan i det faktum att teckensnittstillverkaren har eller inte har fyllt det enda kodutrymmet helt med vissa vektorformer.

Galna ord istället för ryska bokstäver - hur man fixar det

Låt oss nu se hur krakozyabrs visas istället för text eller, med andra ord, hur den korrekta kodningen för rysk text väljs. Egentligen är det inställt i programmet där du skapar eller redigerar just denna text, eller kod med hjälp av textfragment.

För att redigera och skapa textfiler använder jag personligen en mycket bra, enligt min mening, . Det kan dock lyfta fram syntaxen för hundratals andra programmerings- och märkningsspråk, och har även möjlighet att utökas med plugins. Läs en detaljerad recension av detta underbara program på länken.

I toppmenyn i Notepad++ finns ett objekt "Kodningar", där du kommer att ha möjlighet att konvertera ett befintligt alternativ till det som används som standard på din webbplats:

När det gäller en webbplats på Joomla 1.5 och högre, samt i fallet med en blogg på WordPress, bör du välja alternativet för att undvika uppkomsten av sprickor UTF 8 utan BOM. Vad är BOM-prefixet?

Faktum är att när de utvecklade YUTF-16-kodningen, bestämde de sig av någon anledning för att fästa en sådan sak som förmågan att skriva teckenkoden både i direkt följd (till exempel 0A15) och omvänt (150A) . Och för att program ska förstå exakt i vilken sekvens de ska läsa koderna, uppfanns det BOM(Byte Order Mark eller, med andra ord, signatur), vilket uttrycktes i att lägga till ytterligare tre byte i början av dokumenten.

I UTF-8-kodningen tillhandahölls inga stycklistor i Unicode-konsortiet, och därför att lägga till en signatur (de där ökända extra tre bytes i början av dokumentet) hindrar helt enkelt vissa program från att läsa koden. När vi sparar filer i UTF måste vi därför alltid välja alternativet utan BOM (utan signatur). Så du är i förväg skydda dig från krypande krakozyabrs.

Det som är anmärkningsvärt är att vissa program i Windows inte kan göra detta (de kan inte spara text i UTF-8 utan en BOM), till exempel samma ökända Windows Notepad. Den sparar dokumentet i UTF-8, men lägger ändå till signaturen (tre extra byte) i början av det. Dessutom kommer dessa bytes alltid att vara desamma - läs koden i direkt följd. Men på servrar, på grund av denna lilla sak, kan ett problem uppstå - skurkar kommer ut.

Därför under inga omständigheter Använd inte vanliga Windows-anteckningar för att redigera dokument på din webbplats om du inte vill att några sprickor ska uppstå. Jag anser att den redan nämnda Notepad++-redigeraren är det bästa och enklaste alternativet, som praktiskt taget inte har några nackdelar och bara består av fördelar.

I Notepad++, när du väljer en kodning, har du möjlighet att konvertera text till UCS-2-kodning, som till sin natur är mycket nära Unicode-standarden. Även i Notepad kommer det att vara möjligt att koda text i ANSI, d.v.s. i förhållande till det ryska språket kommer detta att vara Windows 1251, som vi redan har beskrivit precis ovan Var kommer denna information ifrån?

Det är registrerat i registret för ditt Windows-operativsystem - vilken kodning du ska välja när det gäller ANSI, vilken du ska välja när det gäller OEM (för det ryska språket kommer det att vara CP866). Om du ställer in ett annat standardspråk på din dator kommer dessa kodningar att ersättas med liknande från ANSI- eller OEM-kategorin för samma språk.

När du har sparat dokumentet i Notepad++ i den kodning du behöver eller öppnat dokumentet från webbplatsen för redigering, kan du se dess namn i det nedre högra hörnet av redigeraren:

För att undvika rednecks Utöver de åtgärder som beskrivs ovan kommer det att vara användbart att skriva information om denna kodning i rubriken i källkoden på alla sidor på webbplatsen så att det inte uppstår någon förvirring på servern eller den lokala värden.

I allmänhet använder alla hypertextmarkeringsspråk utom HTML en speciell xml-deklaration, som anger textkodningen.

Innan koden analyseras vet webbläsaren vilken version som används och exakt hur den behöver tolka teckenkoderna för det språket. Men det som är anmärkningsvärt är att om du sparar dokumentet i standard Unicode kan denna xml-deklaration utelämnas (kodningen kommer att betraktas som UTF-8 om det inte finns någon BOM eller UTF-16 om det finns en BOM).

I fallet med ett HTML-språkdokument används kodningen för att indikera Meta element, som skrivs mellan inledande och avslutande Head-taggar:

... ...

Den här posten skiljer sig ganska mycket från den som antogs i, men är helt kompatibel med den nya HTML 5-standarden som långsamt introduceras, och den kommer att förstås helt korrekt av alla webbläsare som används för närvarande.

I teorin skulle det vara bättre att placera ett Meta-element som anger HTML-dokumentets kodning så högt som möjligt i dokumenthuvudet så att vid tidpunkten för det första tecknet i texten som inte kommer från den grundläggande ANSI (som alltid läses korrekt och i alla varianter), bör webbläsaren redan ha information om hur man tolkar koderna för dessa tecken.

Lycka till! Vi ses snart på bloggsidans sidor

Du kanske är intresserad

Vad är URL-adresser, hur skiljer sig absoluta och relativa länkar för en webbplats?
OpenServer - en modern lokal server och ett exempel på hur man använder den för att installera WordPress på en dator
Vad är Chmod, vilka behörigheter att tilldela filer och mappar (777, 755, 666) och hur man gör det via PHP
Yandex sök efter webbplats och onlinebutik

Kodning KOI8-R

ISO 8859-5-kodning

ISO 8859-5

Alternativ kodning

"Alternativ kodning"- En CP437-baserad teckentabell där alla specifika europeiska tecken i den andra halvan ersätts med kyrilliska, vilket lämnar pseudografiska tecken intakta. Följaktligen förstör detta inte utseendet på program som använder textfönster, och säkerställer också att de använder kyrilliska tecken.

Historiskt sett har det funnits många alternativa kodningsalternativ, men alla skillnader gäller endast området 0xF0 - 0xFF (240-255). Den slutliga standarden var IBM CP866-kodningen, stöd för vilken lades till i MS-DOS version 6.22 (innan dess användes alla möjliga "hemgjorda" Russifiers. Den alternativa kodningen är fortfarande levande och extremt populär i DOS och OS /2-miljön I denna kodning skriver vi även namn i FAT-filsystemet CP866 används fortfarande i konsolen i Windows NT-familjen.

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. En 410 B 411 B 412 G 413 D 414 E 415 ZH 416 Z 417 Och 418 J 419 K 41A L 41B M 41C H 41D Cirka 41E P 41F
9. R 420 C 421 T 422 U 423 F 424 X 425 Ts 426 Ch 427 428 kr Shch 429 b 42A S 42B b 42C E 42D Yu 42E Jag är 42F
A. en 430 b 431 i 432 g 433 d 434 e 435 f 436 z 437 och 438 th 439 till 43A l 43B m 43C n 43D o 43E n 43F
B. ░ 2591 ▒ 2592 ▓ 2593 │ 2502 ┤ 2524 ╡ 2561 ╢ 2562 ╖ 2556 ╕ 2555 ╣ 2563 ║ 2551 ╗ 2557 ╝ 255D ╜ 255C ╛ 255B ┐ 2510
C. └ 2514 ┴ 2534 ┬ 252C ├ 251C ─ 2500 ┼ 253C ╞ 255E ╟ 255F ╚ 255A ╔ 2554 ╩ 2569 ╦ 2566 ╠ 2560 ═ 2550 ╬ 256C ╧ 2567
D. ╨ 2568 ╤ 2564 ╥ 2565 ╙ 2559 ╘ 2558 ╒ 2552 ╓ 2553 ╫ 256B ╪ 256A ┘ 2518 ┌ 250C █ 2588 ▄ 2584 ▌ 258C ▐ 2590 ▀ 2580
E. 440 kr från 441 t 442 på 443 f 444 x 445 c 446 h 447 w 448 sch 449 ъ 44A s 44B b 44C eh 44D Yu 44E Jag är 44F
F. Yo 401 e 451 Є 404 є 454 × 407 ї 457 Ў 40E ў 45E °B0 ∙ 2219 B7 √ 221A № 2116 ¤ A4 ■ 25A0 A0

SO 8859-5- 8-bitars kodning från ISO-8859-serien för att skriva kyrilliska. Det används nästan aldrig i Ryssland. I allmänhet är ISO 8859-5 inte en särskilt bekväm kodning, eftersom den saknar många nödvändiga symboler, såsom bindestreck (-), fiskbenscitattecken (""), grad (°), etc.



.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
9. 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A. A0 Yo 401 £402 Ѓ 403 Є 404 £405 Jag 406 × 407 £408 Љ 409 Њ 40A Ћ 40B Ќ 40C AD Ў 40E £ 40F
B. En 410 B 411 B 412 G 413 D 414 E 415 ZH 416 Z 417 Och 418 J 419 K 41A L 41B M 41C H 41D Cirka 41E P 41F
C. R 420 C 421 T 422 U 423 F 424 X 425 Ts 426 Ch 427 428 kr Shch 429 b 42A S 42B b 42C E 42D Yu 42E Jag är 42F
D. en 430 b 431 i 432 g 433 d 434 e 435 f 436 z 437 och 438 th 439 till 43A l 43B m 43C n 43D o 43E n 43F
E. 440 kr från 441 t 442 på 443 f 444 x 445 c 446 h 447 w 448 sch 449 ъ 44A s 44B b 44C eh 44D Yu 44E Jag är 44F
F. № 2116 e 451 452 € - 453 є 454 455 USD jag 456 ї 457 $458 љ 459 њ 45A ћ 45B ќ 45C § A7 ў 45E џ 45F

KOI-8 (informationsutbyteskod, 8 bitar), KOI8- Åttabitars standard för teckenkodning inom datavetenskap. Designad för att koda bokstäver i de kyrilliska alfabeten. Det finns också en sjubitarsversion av kodningen - KOI-7. KOI-7 och KOI-8 beskrivs i GOST 19768-74 (nu ogiltig).

Utvecklarna av KOI-8 placerade tecknen i det ryska alfabetet överst i den utökade ASCII-tabellen på ett sådant sätt att positionerna för de kyrilliska tecknen motsvarar deras fonetiska motsvarigheter i det engelska alfabetet längst ner i tabellen. Detta betyder att om den åttonde biten av varje tecken tas bort i en text skriven i KOI-8, så erhålls en "läsbar" text, även om den är skriven med latinska tecken. Till exempel skulle orden "rysk text" bli "rUSSKIJ tEKST". Som en sidokonsekvens var de kyrilliska tecknen inte ordnade i alfabetisk ordning.

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. ─ 2500 │ 2502 ┌ 250C ┐ 2510 └ 2514 ┘ 2518 ├ 251C ┤ 2524 ┬ 252C ┴ 2534 ┼ 253C ▀ 2580 ▄ 2584 █ 2588 ▌ 258C ▐ 2590
9. ░ 2591 ▒ 2592 ▓ 2593 ⌠ 2320 ■ 25A0 ∙ 2219 √ 221A ≈ 2248 ≤ 2264 ≥ 2265 A0 ⌡ 2321 °B0 ² B2 B7 ÷ F7
A. ═ 2550 ║ 2551 ╒ 2552 e 451 ╓ 2553 ╔ 2554 ╕ 2555 ╖ 2556 ╗ 2557 ╘ 2558 ╙ 2559 ╚ 255A ╛ 255B ╜ 255C ╝ 255D ╞ 255E
B. ╟ 255F ╠ 2560 ╡ 2561 Yo 401 ╢ 2562 ╣ 2563 ╤ 2564 ╥ 2565 ╦ 2566 ╧ 2567 ╨ 2568 ╩ 2569 ╪ 256A ╫ 256B ╬ 256C © A9
C. Yu 44E en 430 b 431 c 446 d 434 e 435 f 444 g 433 x 445 och 438 th 439 till 43A l 43B m 43C n 43D o 43E
D. n 43F Jag är 44F 440 kr från 441 t 442 på 443 f 436 i 432 b 44C s 44B z 437 w 448 eh 44D sch 449 h 447 ъ 44A
E. Yu 42E En 410 B 411 Ts 426 D 414 E 415 F 424 G 413 X 425 Och 418 J 419 K 41A L 41B M 41C H 41D Cirka 41E
F. P 41F Jag är 42F R 420 C 421 T 422 U 423 ZH 416 B 412 b 42C S 42B Z 417 428 kr E 42D Shch 429 Ch 427 b 42A

Kodning KOI8-U (ukrainska)

— Zampolit (@ComradZampolit) 17 augusti 2017

Hur fungerar KOI8-R?

KOI8-R är en åttabitars teckentabell utformad för att koda bokstäver i de kyrilliska alfabeten. Utvecklarna placerade tecknen i det ryska alfabetet på ett sådant sätt att positionerna för de kyrilliska tecknen motsvarade deras fonetiska motsvarigheter i det engelska alfabetet längst ner i tabellen. Och om den åttonde biten av varje tecken tas bort i en text skriven i denna kodning, blir resultatet en text som liknar en translitteration med latinska bokstäver.

Denna informationsutbyteskod användes på sjuttiotalet på datorer i ES-datorserien, och från mitten av åttiotalet började den användas i de första russifierade versionerna av UNIX-operativsystemet.

Kodning bestod i det faktum att varje tecken tilldelades en unik kod: från 00000000 till 11111111. En person särskiljde alltså tecken genom sin kontur och en dator - med sin kod.

Används Chernoff-kodning för närvarande?

Nej. Det var relevant för gamla åttabitarsdatorer, nu används främst Unicode i olika format.

KOI-8 blev den första ryska standardiserade kodningen på Internet.

IETF har godkänt flera RFC:er på KOI-8-kodningsalternativ:

  • RFC 1489 - KOI8-R (bokstäver i det ryska alfabetet);
  • RFC 2319 - KOI8-U (bokstäver i det ukrainska alfabetet);
  • RFC 1345 - ISO-IR-111 (med ett fel i definitionen av huvudområdet).

I tabellerna nedan anger siffrorna under bokstäverna den hexadecimala Unicode-koden för bokstaven.

Kodning KOI8-R (ryska)

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

8.

2500

2502

250C

2510

2514

2518

251C

2524

252C

2534

253C

2580

2584

2588

258C

2590

9.

2591

2592

2593

2320

25A0

2219

221A

2248

2264

2265

A0

2321
°
B0
²
B2
·
B7
÷
F7

A.

2550

2551

2552
e
451

2553

2554

2555

2556

2557

2558

2559

255A

255B

255C

255D

255E

B.

255F

2560

2561
Yo
401

2562

2563

2564

2565

2566

2567

2568

2569

256A

256B

256C
©
A9

C.
Yu
44E
A
430
b
431
ts
446
d
434
e
435
f
444
G
433
X
445
Och
438
th
439
Till
43A
l
43B
m
43C
n
43D
O
43E

D.
P
43F
jag
44F
R
440
Med
441
T
442

443
och
436
V
432
b
44C
s
44B
h
437
w
448
eh
44D
sch
449
h
447
ъ
44A

E.
YU
42E
A
410
B
411
C
426
D
414
E
415
F
424
G
413
X
425
OCH
418
Y
419
TILL
41A
L
41B
M
41C
N
41D
HANDLA OM
41E

F.
P
41F
jag
42F
R
420
MED
421
T
422
U
423
OCH
416
I
412
b
42C
Y
42B
Z
417
Sh
428
E
42D
SCH
429
H
427
Kommersant
42A

Andra alternativ

Endast tabellrader som inte stämmer visas, eftersom allt annat stämmer.

Kodning KOI8-U (ryska-ukrainska)

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

A.

2550

2551

2552
e
451
є
454

2554
і
456
ї
457

2557

2558

2559

255A

255B
ґ
491

255D

255E

B.

255F

2560

2561
Yo
401
Є
404

2563
І
406
Ї
407

2566

2567

2568

2569

256A
Ґ
490

256C
©
A9

Kodning KOI8-RU (ryska-vitryska-ukrainska)

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

A.

2550

2551

2552
e
451
є
454

2554
і
456
ї
457

2557

2558

2559

255A

255B
ґ
491
ў
45E

255E

B.

255F

2560

2561
Yo
401
Є
404

2563
І
406
Ї
407

2566

2567

2568

2569

256A
Ґ
490
Ў
40E
©
A9

Kodning KOI8-C (Centralasien)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. ғ
493
җ
497
қ
49B
ҝ
49D
ң
4A3
ү
4AF
ұ
4B1
ҳ
4B3
ҷ
4B7
ҹ
4B9
һ
4BB

2580
ә
4D9
ӣ
4E3
ө
4E9
ӯ
4EF
9. Ғ
492
Җ
496
Қ
49A
Ҝ
49C
Ң
4A2
Ү
4AE
Ұ
4B0
Ҳ
4B2
Ҷ
4B6
Ҹ
4B8
Һ
4BA

2321
Ә
4D8
Ӣ
4E2
Ө
4E8
Ӯ
4EE
A.
A0
ђ
452
ѓ
453
e
451
є
454
ѕ
455
і
456
ї
457
ј
458
љ
459
њ
45A
ћ
45B
ќ
45C
ґ
491
ў
45E
џ
45F
B.
2116
Ђ
402
Ѓ
403
Yo
401
Є
404
Ѕ
405
І
406
Ї
407
Ј
408
Љ
409
Њ
40A
Ћ
40B
Ќ
40C
Ґ
490
Ў
40E
Џ
40F

Kodning KOI8-T (tadzjikiska)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. қ
49B
ғ
493

201A
Ғ
492

201E

2026

2020

2021

2030
ҳ
4B3

2039
Ҳ
4B2
ҷ
4B7
Ҷ
4B6
9. Қ
49A

2018

2019

201C

201D

2022

2013
-
2014

2122

203A
A. ӯ
4EF
Ӯ
4EE
e
451
¤
A4
ӣ
4E3
¦
A6
§
A7
«
AB
¬
A.C.
­
AD
®
A.E.
B. °
B0
±
B1
²
B2
Yo
401
Ӣ
4E2

B6
·
B7

2116
»
BB
©
A9

Kodning KOI8-O, KOI8-S (slavisk, gammal stavning)

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

8.
Ђ
0402
Ѓ
0403
¸
00B8
ѓ
0453

201E

2026

2020
§
00A7

20 AC
¨
00A8
Љ
0409

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

9.
ђ
0452

2018

2019

201C

201D

2022

2013

2014
£
00A3
·
00B7
љ
0459

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

A.

00A0
ѵ
0475
ѣ
0463
e
0451
є
0454
ѕ
0455
і
0456
ї
0457
ј
0458
®
00AE

2122
«
00AB
ѳ
0473
ґ
0491
ў
045E
´
00B4

B.
°
00B0
Ѵ
0474
Ѣ
0462
Yo
0401
Є
0404
Ѕ
0405
І
0406
Ї
0407
Ј
0408

2116
¢
00A2
»
00BB
Ѳ
0472
Ґ
0490
Ў
040E
©
00A9

Kodning ISO-IR-111, KOI8-E

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

A.

00A0
ђ
0452
ѓ
0453
e
0451
є
0454
ѕ
0455
і
0456
ї
0457
ј
0458
љ
0459
њ
045A
ћ
045B
ќ
045C
­
00 e.Kr
ў
045E
џ
045F

B.

2116
Ђ
0402
Ѓ
0403
Yo
0401
Є
0404
Ѕ
0405
І
0406
Ї
0407
Ј
0408
Љ
0409
Њ
040A
Ћ
040B
Ќ
040C
¤
00A4
Ў
040E
Џ
040F

Kodning KOI8-Unified, KOI8-F

KOI8-Unified (KOI8-F)-kodningen föreslogs av Fingertip Software.

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

8.

2500

2502

250C

2510

2514

2518

251C

2524

252C

2534

253C

2580

2584

2588

258C

2590

9.

2591

2018

2019

201C

201D

2022

2013

2014
©
00A9

2122

00A0
»
00BB
®
00AE
«
00AB
·
00B7
¤
00A4

A.

00A0
ђ
0452
ѓ
0453
e
0451
є
0454
ѕ
0455
і
0456
ї
0457
ј
0458
љ
0459
њ
045A
ћ
045B
ќ
045C
ґ
0491
ў
045E
џ
045F

B.

2116
Ђ
0402
Ѓ
0403
Yo
0401
Є
0404
Ѕ
0405
І
0406
Ї
0407
Ј
0408
Љ
0409
Њ
040A
Ћ
040B
Ќ
040C
Ґ
0490
Ў
040E
Џ
040F

Icke-kyrilliska varianter av KOI-8

I vissa CMEA-länder skapades modifieringar av KOI-8 för nationella varianter av det latinska alfabetet. Grundidén var densamma - när den åttonde biten är "avskuren" borde texten förbli mer eller mindre begriplig.

- Nåväl, låt oss börja! - sa Dolokhov.
"Jaha," sa Pierre och log fortfarande. "Det började bli läskigt." Det var uppenbart att den saken, som började så lätt, inte längre kunde förhindras, att den gick av sig själv, oavsett människors vilja, och måste fullbordas. Denisov var den första som steg fram till barriären och proklamerade:
- Eftersom "motståndarna" vägrade att "namna" dem, skulle du vilja börja: ta pistoler och, enligt ordet "t", och börja konvergera.
- G... "az! Två! T" och!... - skrek Denisov argt och klev åt sidan. Båda gick längs de upptrampade stigarna närmare och närmare och kände igen varandra i dimman. Motståndarna hade rätt att, konvergerande till barriären, skjuta när någon ville. Dolokhov gick långsamt, utan att höja sin pistol, och tittade med sina ljusa, glänsande, blå ögon in i ansiktet på sin motståndare. Hans mun hade som alltid sken av ett leende.
– Så när jag vill kan jag skjuta! - sa Pierre, vid ordet tre gick han fram med snabba steg, avvek från den upptrampade stigen och gick på fast snö. Pierre höll pistolen med sin högra hand utsträckt framåt, uppenbarligen rädd att han skulle ta livet av sig med denna pistol. Han lade försiktigt tillbaka sin vänstra hand, för han ville stödja sin högra hand med den, men han visste att detta var omöjligt. Efter att ha gått sex steg och avvikit från stigen in i snön, tittade Pierre tillbaka på sina fötter, tittade återigen snabbt på Dolokhov och sköt i fingret, som han hade lärt sig, avlossning. Eftersom han inte förväntade sig ett så starkt ljud, ryckte Pierre till från sitt skott, log sedan åt sitt eget intryck och stannade. Röken, särskilt tjock från dimman, hindrade honom från att se först; men det andra skottet han väntade på kom inte. Endast Dolokhovs snabba steg hördes, och hans gestalt dök upp bakom röken. Med ena handen höll han sin vänstra sida, med den andra höll han om den sänkta pistolen. Hans ansikte var blekt. Rostov sprang fram och sa något till honom.
"Nej...e...t", sa Dolokhov genom sina tänder, "nej, det är inte över", och tog ytterligare några fallande, trasslande steg ända fram till sabeln och föll på snön bredvid. Hans vänstra hand var täckt av blod, han torkade den på sin rock och lutade sig mot den. Hans ansikte var blekt, rynkade pannan och darrade.
"Snälla..." började Dolokhov, men kunde inte säga direkt... "Snälla," avslutade han med en ansträngning. Pierre, som knappt höll tillbaka sina snyftningar, sprang till Dolokhov och var på väg att korsa utrymmet som skiljer barriärerna åt när Dolokhov ropade: "till barriären!" - och Pierre, som insåg vad som hände, stannade vid sin sabel. Endast 10 steg skilde dem åt. Dolokhov sänkte huvudet mot snön, bet girigt i snön, höjde huvudet igen, rättade till sig, stoppade in benen och satte sig och letade efter en stark tyngdpunkt. Han svalde kall snö och sög den; hans läppar darrade, men fortfarande log; ögonen gnistrade av ansträngning och illvilja av den sist samlade kraften. Han höjde pistolen och började sikta.
"Sidleds, täck dig med en pistol," sa Nesvitsky.
"Se upp för dig själv!", skrek till och med Denisov, som inte kunde stå ut med det.
Pierre, med ett saktmodigt leende av ånger och omvändelse, hjälplöst spridda ben och armar, stod rakt framför Dolokhov med sitt breda bröst och såg sorgset på honom. Denisov, Rostov och Nesvitsky slöt ögonen. Samtidigt hörde de ett skott och Dolokhovs arga rop.
- Dåtid! – Dolokhov skrek och låg hjälplöst med ansiktet nedåt på snön. Pierre tog tag i hans huvud och vände sig om och gick in i skogen, gick helt i snön och uttalade oförstående ord:
- Dumt... dumt! Döden... lögner... - upprepade han och ryckte till. Nesvitsky stoppade honom och tog honom hem.
Rostov och Denisov tog den sårade Dolokhov.
Dolokhov låg tyst, med slutna ögon, i släden och svarade inte ett ord på de frågor som ställdes till honom; men efter att ha kommit in i Moskva vaknade han plötsligt och med svårighet att lyfta huvudet tog han Rostov, som satt bredvid honom, i handen. Rostov slogs av det helt förändrade och oväntat entusiastiskt ömma uttrycket i Dolokhovs ansikte.
- Nåväl? Hur mår du? frågade Rostov.
- Dåligt! men det är inte meningen. Min vän, sa Dolokhov med bruten röst, "var är vi?" Vi är i Moskva, jag vet. Jag är okej, men jag dödade henne, dödade henne... Hon kommer inte att stå ut. Hon orkar inte...
- WHO? frågade Rostov.
- Min mamma. Min mamma, min ängel, min älskade ängel, mamma,” och Dolokhov började gråta och klämde Rostovs hand. När han lugnat ner sig något förklarade han för Rostov att han bodde hos sin mamma och att om hans mamma såg honom dö så skulle hon inte stå ut med det. Han bad Rostov att gå till henne och förbereda henne.
Rostov gick vidare för att utföra uppdraget, och till sin stora förvåning fick han veta att Dolokhov, denna bråkare, den råa Dolokhov bodde i Moskva med sin gamla mor och puckelryggiga syster, och var den ömmaste sonen och brodern.

Pierre hade nyligen sällan sett sin fru ansikte mot ansikte. Både i St Petersburg och Moskva var deras hus ständigt fullt av gäster. Nästa natt efter duellen gick han, som han ofta gjorde, inte till sovrummet, utan stannade kvar på sitt enorma faders kontor, detsamma som greve Bezukhy dog ​​i.
Han lade sig i soffan och ville somna för att glömma allt som hände honom, men han kunde inte göra det. En sådan storm av känslor, tankar, minnen uppstod plötsligt i hans själ att han inte bara inte kunde sova, utan kunde inte sitta stilla och var tvungen att hoppa upp från soffan och gå snabbt runt i rummet. Sedan föreställde han sig henne först efter hennes äktenskap, med öppna axlar och en trött, passionerad blick, och omedelbart bredvid henne föreställde han sig Dolokhovs vackra, fräcka och bestämt hånande ansikte, som det hade varit vid middagen, och samma ansikte av Dolokhov, blek, darrande och lidande som det var när han vände sig om och föll ner i snön.
"Vad hände? – frågade han sig själv. "Jag dödade min älskare, ja, jag dödade min frus älskare." Ja det var det. Från vad? Hur kom jag till denna punkt? "För att du gifte dig med henne," svarade en inre röst.
"Men vad har jag att skylla på? - han frågade. "Faktum är att du gifte dig utan att älska henne, att du bedrog både dig själv och henne," och han föreställde sig levande den där minuten efter middagen hos prins Vasily när han sa dessa ord som aldrig undgick honom: "Je vous aime." [Jag älskar dig.] Allt från detta! Jag kände då, tänkte han, jag kände då att det inte var så att jag inte hade rätt till det. Och så blev det." Han mindes smekmånaden och rodnade vid minnet. Särskilt levande, kränkande och skamligt för honom var minnet av hur han en dag, strax efter sitt äktenskap, vid 12-tiden, i en sidenrock, kom från sovrummet till kontoret, och på kontoret fann han chefschefen, som böjde sig respektfullt och såg på Pierres ansikte, på sin mantel, och log lätt, som om han med detta leende uttryckte respektfull sympati för sin rektors lycka.
"Och hur många gånger har jag varit stolt över henne, stolt över hennes majestätiska skönhet, hennes sociala takt," tänkte han; han var stolt över sitt hem, där hon välkomnade hela St. Petersburg, han var stolt över hennes otillgänglighet och skönhet. Så det här var jag stolt över?! Jag trodde då att jag inte förstod henne. Hur ofta, när jag begrundade hennes karaktär, sa jag till mig själv att det var mitt fel att jag inte förstod henne, att jag inte förstod detta ständiga lugn, belåtenhet och frånvaro av fasthållanden och önskningar, och hela lösningen var i det fruktansvärda ord att hon var en fördärvad kvinna: sa detta fruktansvärda ord till mig själv, och allt blev klart!
”Anatole gick till henne för att låna pengar av henne och kysste hennes bara axlar. Hon gav honom inga pengar, men hon lät honom kyssa henne. Hennes far väckte på skämt hennes svartsjuka; hon sa med ett lugnt leende att hon inte var så dum att hon var avundsjuk: låt henne göra vad hon vill, sa hon om mig. Jag frågade henne en dag om hon kände några tecken på graviditet. Hon skrattade föraktfullt och sa att hon inte var dum som ville ha barn och att hon inte skulle få barn från mig.”
Sedan mindes han elakheten, klarheten i hennes tankar och vulgariteten i uttrycken som var karaktäristiska för henne, trots hennes uppväxt i den högsta aristokratiska kretsen. "Jag är ingen idiot... gå och prova själv... allez vous promener", sa hon. När han ofta tittade på hennes framgång i gamla och unga mäns och kvinnors ögon kunde Pierre inte förstå varför han inte älskade henne. Ja, jag har aldrig älskat henne, sa Pierre till sig själv; Jag visste att hon var en fördärvad kvinna, upprepade han för sig själv, men han vågade inte erkänna det.







2024 gtavrl.ru.