Problemen oplossen met onjuiste codering van een webpagina. De basis van de basis - ASCII-codering en zijn moderne interpretaties

Als de codering onjuist is, wordt de hele site of een deel ervan weergegeven als "cryapozables", d.w.z. obscure tekens die de tekst onleesbaar maken. Deze situatie kan optreden als de codering van de webserver onjuist is ingesteld of als er geen instellingen zijn. Overweeg mogelijke opties en manieren om problemen op te lossen

Onjuiste codering van HTML-pagina's

Laten we een testbestand maken:

sudo gedit /var/www/html/encoding.html

Laten we erin kopiëren:

Coderingscontrole



Open dit bestand in een browser

Zoals u kunt zien, is de codering onjuist gedefinieerd door de browser:

Er zijn verschillende manieren om deze situatie te verhelpen. Laten we beginnen met de eenvoudigste - specificeer expliciet de codering voor de webpagina. Dit wordt gedaan door een metatag, die in de tag moet worden geplaatst hoofd:

Laten we deze regel aan ons testbestand toevoegen, zodat het er als volgt uitziet:

Coderingscontrole

Testbestand om de codering te controleren



Zoals we kunnen zien in de volgende schermafbeelding, is het probleem opgelost:

Als uw bestandscodering verschilt van UTF-8, plaats dan in plaats daarvan windows-1251 of een die overeenkomt met de codering van de webpagina. Zie voor meer informatie over het bepalen van bestandscodering.

Dit was de gemakkelijkste manier om het coderingsprobleem op te lossen - zonder de serverinstellingen te wijzigen.

Laten we ons testbestand terugbrengen naar de oorspronkelijke staat en doorgaan met het bestuderen van manieren om de codering te specificeren.

Als de bestanden .htaccess ingeschakeld door Apache-instellingen, kunnen deze bestanden worden gebruikt om de codering van pagina's te specificeren die door de webserver worden verzonden. Bestandsondersteuning inschakelen: .htaccess in Apache-configuratiebestand ( /etc/apache2/apache2.conf) zoek de rijgroep

Opties Indexen FollowSymLinks AllowOverride Geen Vereist alles toegekend

En daarin vervangen

ToestaanOverschrijven Geen

ToestaanAlles overschrijven

Daarna moet de server opnieuw worden opgestart.

sudo systemctl herstart apache2.service

Bestand .htaccess moet in dezelfde map worden geplaatst als de site. Mijn site wordt gehost in de hoofdmap van de webserver. Als je dat ook hebt, nu in de map /var/www/html/ maak een bestand aan .htaccess en voeg de richtlijn eraan toe AddDefaultCharset specificeer daarna de gewenste codering. Voorbeelden

AddDefaultCharset UTF-8

AddDefaultCharset windows-1251

U kunt een codering opgeven die alleen wordt toegepast op bestanden met een bepaald formaat:

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

De set bestanden kan van alles zijn, bijvoorbeeld:

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

De volgende optie is een alternatief en stelt je ook in staat om de codering in te stellen voor bestanden van een bepaald type, het moet ingeschakeld zijn mod_headers:

Headerset Content-Type "text/html; charset=utf-8"

Een andere optie die ook in het bestand kan worden gebruikt .htaccess om UTF-8-codering in te stellen:

IndexOptions +Charset=UTF-8

Als de site in PHP is, moet u mogelijk bovendien de codering dupliceren met php_value default_charset:

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

In plaats van een .htaccess-bestand te maken, kunt u de codering instellen in het configuratiebestand van de webserver. Voor Apache CentOS/Fedora is dit het bestand httpd.conf, en voor Debian/Ubuntu is dit het bestand apache2.conf. Voeg de volgende regel toe om de codering in te stellen en start de webserver opnieuw om de wijzigingen door te voeren:

AddDefaultCharset UTF-8

Hoe u UTF-8-codering in PHP instelt

Gebruik in een PHP-script om de codering in te stellen koptekst, Bijvoorbeeld:

Header ("Inhoudstype: charset=utf-8");

Meestal wordt naast de codering ook het inhoudstype aangegeven (in het voorbeeld de variant voor de HTML-pagina):

Header("Inhoudstype: tekst/html; charset=utf-8");

Een andere optie voor RSS-feed:

Header("Inhoudstype: tekst/xml; charset=utf-8");

Onthoud dat de functie koptekst moet worden aangeroepen voordat er uitvoer naar de browser wordt uitgevoerd. Anders (als de uitvoer naar de browser al is gedaan), zijn de headers al verzonden. In dit geval is het uiteraard niet meer mogelijk om ze te wijzigen. Als er een foutmelding aan de browser werd getoond, dan zijn de headers ook al verzonden en zal het gebruik van header een fout veroorzaken. Gebruik . om te controleren of de headers al zijn verzonden headers_sent.

De beschreven methode werkt alleen wanneer het PHP-script de inhoud van de pagina volledig genereert. Statische pagina's (zoals html) moeten worden opgeslagen in utf-8-codering. De meeste webservers nemen kennis van de codering van het bestand en voegen een passende header toe. In feite zal het opslaan van een PHP-bestand in utf-8-codering hetzelfde resultaat opleveren.

Verkeerde codering van resultaten uit MySQL-database

Als uw site bestaat uit een statisch deel (sjabloon) en een dynamisch deel, dat wordt gevormd uit gegevens die worden ontvangen uit de database, dan kan er een situatie ontstaan ​​waarin een deel van de site de juiste codering heeft en het andere deel van de site de juiste codering heeft. de verkeerde. In dit geval is het nutteloos om de instellingen van de webserver te wijzigen - omdat toch een deel van de pagina de verkeerde codering heeft.

U moet beginnen met het bepalen van de codering van uw tabellen. Te bezichtigen in phpMijnAdmin:

Let op de kolom Vergelijking", invoer " utf8_unicode_ci" betekent dat de codering wordt gebruikt UTF-8.

Het is mogelijk om verbinding te maken met het MySQL DBMS en de tabelcodering te controleren zonder phpMyAdmin. Voor deze:

MySQL -u root -p

Als u de databasenaam bent vergeten, voert u de opdracht uit:

TOON DATABANKEN;

Laten we zeggen dat ik de codering voor tabellen in de information_schema-database wil zien

GEBRUIK informatie_schema;

Als u de naam van de tabellen bent vergeten, voert u het volgende uit:

TOON VOLLEDIGE KOLOMMEN VAN table_name;

Bijvoorbeeld:

TOON VOLLEDIGE KOLOMMEN VAN GLOBAL_STATUS;

Je ziet zoiets als dit:

zie kolom Sorteren. In mijn geval daar utf8_general_ci, het is alsof utf8_unicode_ci, codering UTF-8. Trouwens, als je niet weet wat het verschil is tussen coderingen? utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, evenals welke codering u moet kiezen voor de MySQL-database, zie dan .

Nu we de codering hebben geleerd (in mijn geval is het UTF-8), moet u elke keer dat u verbinding maakt met de MySQL DBMS, de query's in volgorde uitvoeren:

STEL NAMEN IN UTF8 SET KARAKTER SET UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET character_set_results = UTF8

In PHP kan het als volgt:

$this->mysqli = nieuwe mysqli($server, $gebruikersnaam, $wachtwoord, $basename); if ($this->mysqli->connect_error) ($this->errorHandler_c->logError(1, "Connect Error (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error , $_SERVER ["REQUEST_URI"]); ) $this->mysqli->query ("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SET character_set_client = UTF8"); $this->mysqli->query("SET character_set_connection = UTF8"); $this->mysqli->query("SET character_set_results = UTF8");

Let daar op UTF8 u moet de codering wijzigen die voor uw tabellen wordt gebruikt.

Bestandscodering wijzigen

Als u besluit de andere kant op te gaan en in plaats van een nieuwe codering in te stellen, wijzigt u de codering van uw bestanden en raadpleegt u het artikel "". Het vertelt u hoe u de huidige bestandscodering kunt achterhalen en hoe u bestanden naar elke codering kunt converteren (niet alleen UTF-8).

Hoe kom je erachter welke codering de server verzendt?

Als je wilt weten welke coderingsinstellingen de webserver heeft (welke codering deze in headers verzendt), gebruik dan de volgende opdracht:

Curl-URL -s -o /dev/null -D /dev/stdout | grep -E "tekenset"

In plaats daarvan URL voer het echte adres in van de site die wordt gecontroleerd. Als de site HTTPS gebruikt, geef dan het siteadres op samen met het protocol, bijvoorbeeld

Krul https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "tekenset"

Welke codering te kiezen voor de website

Stuur uw goede werk in de kennisbank is eenvoudig. Gebruik het onderstaande formulier

Studenten, afstudeerders, jonge wetenschappers die de kennisbasis gebruiken in hun studie en werk zullen je zeer dankbaar zijn.

geplaatst op http://www.allbest.ru/

CURSUS WERK

CODERING VAN INFORMATIE IN EEN COMPUTER

1 Theoretisch deel

1.1 Basisconcepten van coderen en decoderen

1.3 Codering van karakterinformatie

1.7 Huffman-algoritme

1.9 Escape-codes

1.10 De stellingen van Shannon

2 Praktijkgedeelte

Programma voor informatie codering

Bijlage

Conclusie

Invoering

De theorie van coderen staat dicht bij de oudste kunst van cryptografie - cryptografie. Veel bekende wetenschappers werkten aan de ontwikkeling van verschillende cijfers: filosoof F. Bacon, wiskundigen D. Cardano, D. Vallis. Gelijktijdig met de ontwikkeling van coderingsmethoden, werden decoderingstechnieken of cryptanalyse ontwikkeld.

Met de komst van computers werd het noodzakelijk om alle soorten informatie te coderen waarmee zowel een individu als de mensheid als geheel te maken heeft. Maar de mensheid begon het probleem van het coderen van informatie op te lossen lang voor de komst van computers.

De grootse prestaties van de mensheid - schrijven en rekenen - zijn niets meer dan een systeem voor het coderen van spraak en numerieke informatie. Informatie verschijnt nooit in zijn pure vorm, het wordt altijd op de een of andere manier gepresenteerd, op de een of andere manier gecodeerd.

Overweeg voorbeelden van codering die we in ons leven tegenkomen. In Rusland, waar bossen geluid doofden, werd de rook van vreugdevuren gebruikt om dringende berichten te verzenden. Veel Afrikaanse stammen gebruiken nog steeds speciale trommels - tom-toms, die berichten uitwisselen met de snelheid van het geluid. Tot nu toe gebruikt de marine een semafooralfabet, waarbij elke letter overeenkomt met een bepaalde positie van de handen van de seingever, onderstreept door vlaggen. Maar om de boodschap niet alleen te accepteren, maar ook te begrijpen, was het nodig om van tevoren af ​​te spreken wat bijvoorbeeld twee keer roken, of een opeenvolging van drie snelle slagen, of armen gespreid, betekende.

Dus, naast het bericht zelf en de methode van verzending, is er nog een ander onderdeel verschenen - de transformatie van informatie, of, in wetenschappelijke termen, codering . Zonder dit vindt er geen informatieoverdracht plaats.

In feite is gewone gesproken en geschreven spraak ook een soort codering. En als we een vreemde taal leren, bestuderen we eigenlijk andere klank- en lettercodes van voorwerpen en fenomenen die we al kennen uit onze kindertijd.

Maar terug naar het verzenden van dringende berichten. Naarmate de beschaving zich ontwikkelde, verschenen er nieuwe mogelijkheden voor hun overdracht.

Michael Faraday deed in 1831 een ontdekking die de wereld letterlijk op zijn kop zette: hij vond een methode uit om elektrische stroom op te wekken. En bijna onmiddellijk werd elektrische stroom gebruikt om berichten te verzenden.

Gebaseerd op de theoretische ontwikkelingen van de Engelse wetenschapper Schilling, creëerde de Amerikaanse uitvinder Samuel Morse telegraaftoestellen en communicatielijnen en introduceerde deze op grote schaal in de praktijk. Morse moest een taal creëren die enigszins leek op die van de Afrikaanse trommeltelegraaf. Zowel de elektrische stroom als de trommel hebben een zeer slechte eigen taal. Je kunt op de trommel slaan of niet. Elektriciteit werkt of doet het niet. Daarom gebruikte de door Morse voorgestelde codering slechts drie eigenaardige letters: een lang signaal (streepje), een kort signaal (punt), geen signaal (pauze) - om letters te scheiden. Dus het beroemde SOS-signaal - (Save Our Souls - save our souls) is als volgt gecodeerd:

<точка>, <точка>, <точка>- S

<пауза>

<тире>, <тире>, <тире>- O

<пауза>

<точка>, <точка>, <точка>- S

Morsecode heeft de mensheid anderhalve eeuw gediend. Zijn signalen doorbraken zo'n atmosferische interferentie dat ze elke gearticuleerde spraak overstemden. En pas onlangs, toen communicatiesatellieten verschenen, wordt het praktisch niet gebruikt. Helaas waren alle vroege pogingen om een ​​machine te maken die morsecode begrijpt niet succesvol. De voorgestelde opties bleken onnodig omslachtig, onbetrouwbaar en duur. Natuurlijk was de technologie van het begin van de eeuw nog niet zo perfect als nu, maar ook het feit dat de morsecode zelf heel moeilijk te herkennen was voor automaten speelde een rol.

In het midden van onze eeuw verschenen onder leiding van Alan Turing nabij Londen computers die letters en cijfers verwerkten, d.w.z. karakter informatie. Het was daar dat in 1943 een gespecialiseerde computer werd gemaakt die Duitse militaire codes ontcijferde (de machine heette "Colossus"). Duizenden onderschepte vijandelijke berichten per dag werden in het geheugen van de Colossus ingevoerd, waarna de machine, op zoek naar een match, honderdduizenden opties doorliep en de meest complexe codes ontcijferde.

Relevantie: In verband met het wijdverbreide gebruik van personal computers, niet alleen als middel voor het verwerken van informatie, maar ook als operationeel communicatiemiddel (elektronisch, telefax), zijn er problemen in verband met het waarborgen van de bescherming van informatie tegen opzettelijke of onopzettelijke vervorming. Daarom is de noodzaak om informatie te coderen van groot belang bij het oplossen van dit probleem en blijft dit ook vandaag de dag relevant.

Een voorwerp: Informatieprocessen

Ding: Informatiecodering:

Doel: Ontwikkel een software- en methodologisch complex "Information Coding" decodering van informatiecodering

Taken :

1. Markeer de basisconcepten van de codeertheorie

2. Verduidelijk de manieren om informatie op een computer te presenteren

3. Overweeg coderingsalgoritmen (Huffman-algoritme, Lempel - Ziv, Hamming)

4. Overweeg de belangrijkste soorten foutcorrigerende codes:

5. Ontwikkel een software- en methodologisch complex voor het coderen van informatie

1 Theoretisch deel

1.1 Basisconcepten van coderen en decoderen

Overweeg een aantal definities die in de codeertheorie worden gebruikt:

De code - een regel die de overeenstemming beschrijft van tekens (of hun combinaties) van het ene alfabet met tekens (of hun combinaties) van een ander alfabet.

codering - vertaling van informatie gepresenteerd door middel van het primaire alfabet in een reeks codes.

decoderen is de omgekeerde bewerking van codering, d.w.z. herstel van informatie in het primaire alfabet volgens de ontvangen volgorde van codes.

Codeer- en decoderingsbewerkingen worden omkeerbaar genoemd als hun sequentiële toepassing een terugkeer naar de oorspronkelijke informatie oplevert zonder verlies ervan.

Een voorbeeld van omkeerbare codering is de weergave van tekens in de telegraafcode bij het verzenden van berichten en het herstellen ervan bij ontvangst.

Een voorbeeld van onomkeerbare codering is het vertalen van tekst van de ene natuurlijke taal naar de andere (de omgekeerde vertaling komt meestal niet letter voor letter overeen met de originele tekst).

De belangrijkste taken van het coderen zijn:

1. Zorgen voor een zuinige informatieoverdracht door redundantie te elimineren

2. Waarborgen van de betrouwbaarheid (ongevoeligheid voor ruis) van informatieoverdracht

3. Coördinatie van informatieoverdrachtssnelheid met kanaalcapaciteit

De overeenkomst tussen de elementen van discrete berichten en het type codering wordt verschaft door te kiezen voor:

1. Duur van signalen

2. Codewoordlengtes

3. Alfabet van karakters en coderingsmethode (letter voor letter, blok). Maak onderscheid tussen letter-voor-letter- en blokcodering. Bij letter-voor-lettercodering wordt aan elk teken van het externe alfabet een codewoord toegewezen uit de tekens van het interne alfabet. Bij blokcodering wordt een woord uit de karakters van het externe alfabet geassocieerd met een codewoord uit de karakters van het interne alfabet.

Om de code omkeerbaar te maken, moet u:

1) zodat verschillende karakters van het invoeralfabet A worden geassocieerd met verschillende codecombinaties;

2) dat geen enkel codewoord het eerste deel van een ander codewoord vormt.

Informatiecodering: (zeg soms - encryptie a ) is het proces van het vormen van een bepaalde representatie van informatie. In engere zin wordt de term "codering" vaak begrepen als de overgang van de ene vorm van informatiepresentatie naar de andere, handiger voor opslag, verzending of verwerking.

Een computer kan alleen informatie verwerken die in numerieke vorm wordt gepresenteerd. Alle informatie (bijvoorbeeld geluiden, afbeeldingen, instrumentuitlezingen, etc.) moet worden omgezet in een numerieke vorm voor verwerking op een computer. Om bijvoorbeeld muzikaal geluid te kwantificeren, kan men de intensiteit van geluid bij bepaalde frequenties met korte tussenpozen meten, waarbij de resultaten van elke meting in numerieke vorm worden gepresenteerd.

Evenzo kan tekstinformatie op een computer worden verwerkt. Bij invoer in een computer wordt elke letter gecodeerd met een bepaald nummer, en bij uitvoer naar externe apparaten (scherm of print), voor menselijke waarneming, worden afbeeldingen van letters gemaakt met behulp van deze cijfers. De correspondentie tussen een reeks letters en cijfers heet tekencodering .

In de regel worden alle getallen in de computer weergegeven met nullen en enen (en niet met tien cijfers, zoals bij mensen gebruikelijk is). Met andere woorden, computers werken meestal in het binaire systeem, omdat de apparaten om ze te verwerken veel eenvoudiger zijn. Het invoeren van getallen in een computer en het uitvoeren ervan voor menselijke lezing kan in de gebruikelijke decimale vorm worden gedaan, en alle noodzakelijke conversies worden uitgevoerd door programma's die op een computer worden uitgevoerd.

1.2 Methoden voor het coderen van informatie op een computer

Dezelfde informatie kan in verschillende vormen worden gepresenteerd (gecodeerd). Binaire codering - een van de meest gebruikelijke manieren om informatie te presenteren. In computers, robots en werktuigmachines met numerieke besturing is in de regel alle informatie waarmee het apparaat te maken heeft, gecodeerd in de vorm van woorden van het binaire alfabet. Het binaire alfabet bestaat uit twee cijfers 0 en 1. Digitale computers (personal computers behoren tot de digitale klasse) gebruiken binaire codering van alle informatie. Dit komt vooral doordat het technisch eenvoudiger bleek om een ​​technisch apparaat te bouwen dat nauwkeurig onderscheid maakt tussen 2 verschillende signaaltoestanden dan één dat nauwkeurig onderscheid zou maken tussen 5 of 10 verschillende toestanden.

De nadelen van binaire codering zijn onder meer zeer lange records van binaire codes, wat het moeilijk maakt om ermee te werken.

Onder de verscheidenheid aan informatie die op een computer wordt verwerkt, is een belangrijk deel numerieke, tekstuele, grafische en audio-informatie. Laten we kennis maken met enkele manieren om dit soort informatie in een computer te coderen.

1.3 Coderen van karakter (tekst) informatie

De belangrijkste bewerking die op afzonderlijke tekens van de tekst wordt uitgevoerd, is tekenvergelijking.

De reeks tekens die wordt gebruikt om tekst te schrijven, wordt een alfabet genoemd. Het aantal tekens in een alfabet wordt de kardinaliteit genoemd.

Bij het vergelijken van karakters zijn de belangrijkste aspecten de uniciteit van de code voor elk karakter en de lengte van deze code, en de keuze van het coderingsprincipe zelf is praktisch irrelevant.

Momenteel verwerken de meeste gebruikers, met behulp van een computer, tekstuele informatie die bestaat uit tekens: letters, cijfers, leestekens, enz. Laten we berekenen hoeveel tekens en hoeveel bits we nodig hebben: 10 cijfers, 12 leestekens, 15 tekens rekenkundige bewerkingen , letters van het Russische en Latijnse alfabet, TOTAAL: 155 tekens, wat overeenkomt met 8 bits informatie.

De essentie van codering is dat aan elk teken een binaire code wordt toegewezen van 00000000 tot 11111111 of de bijbehorende decimale code van 0 tot 255.

Er worden verschillende conversietabellen gebruikt om teksten te coderen.

Conversietabel - een tabel met een lijst van gecodeerde karakters die op de een of andere manier zijn geordend, volgens welke het karakter wordt geconverteerd naar zijn binaire code en vice versa.

De meest populaire conversietabellen zijn: DKOI-8, ASCII, CP1251, Unicode en teksten die zijn gecodeerd met behulp van de ene tabel, worden niet correct weergegeven in een andere, dus het is belangrijk dat dezelfde tabel wordt gebruikt bij het coderen en decoderen van dezelfde tekst. (Basis coderingstabel) ASCII wordt gegeven in tabel 1.1.). Nog niet zo lang geleden werd een nieuwe standaard voor het coderen van tekens voorgesteld UNICODE, waarbij elk teken al is gecodeerd met twee bytes. Hiermee kunt u vrijelijk berichten uitwisselen via internet in elke taal zonder eerst uit te zoeken of de andere computer uw eigen alfabet begrijpt.

In verband met de overvloed aan tekstgegevenscoderingssystemen die in Rusland actief zijn, doet zich het probleem van intersysteemgegevensconversie voor - dit is een van de algemene taken van de informatica.

Historisch gezien werd 8 bits of 1 byte gekozen als de codelengte voor tekencodering. Daarom komt meestal één teken van tekst die is opgeslagen op een computer overeen met één byte geheugen.

1.4 Codering van numerieke informatie

De overeenkomst in het coderen van numerieke en tekstuele informatie is als volgt: om gegevens van dit type te kunnen vergelijken, moeten verschillende getallen (evenals verschillende tekens) een verschillende code hebben. Het belangrijkste verschil tussen numerieke gegevens en symbolische gegevens is dat, naast de vergelijkingsbewerking, verschillende wiskundige bewerkingen op getallen worden uitgevoerd: optellen, vermenigvuldigen, wortelextractie, berekening van de logaritme, enz. De regels voor het uitvoeren van deze bewerkingen in de wiskunde zijn in detail ontwikkeld voor getallen die in het positienummersysteem worden weergegeven. Het basisgetalsysteem voor het weergeven van getallen in een computer is het binaire positienummersysteem.

gecodeerdgeen gehele getallen en reële getallen

Gehele getallen worden heel eenvoudig binair gecodeerd - neem gewoon een geheel getal en deel het doormidden totdat de rest nul of één is. De reeks restanten van elke deling, van rechts naar links geschreven samen met de laatste rest, vormt de binaire analoog van een decimaal getal.

Dus 19 10 = 10011 2 .

Om gehele getallen van 0 tot 255 te coderen, volstaat het om 8 bits binaire code (8 bits) te hebben. Met zestien bits kunt u gehele getallen coderen van 0 tot 65535 en 24 bits - meer dan 16,5 miljoen verschillende waarden.

Reële getallen worden gecodeerd in 80 bits. In dit geval wordt het getal eerst geconverteerd naar genormaliseerde vorm :

3,1415926 = 0,31415926 * 10 1

300 000 = 0,3 * 10 6

123 456 789 = 0,123456789 * 10 10

Het eerste deel van het nummer wordt genoemd mantisse , en de tweede is karakteristiek . De meeste van de 80 bits worden toegewezen om de mantisse op te slaan (samen met een teken) en een vast aantal bits wordt toegewezen om de karakteristiek op te slaan (ook ondertekend).

1.5 Coderen van grafische informatie

Een belangrijke stap bij het coderen van een grafisch beeld is de opdeling in discrete elementen (sampling).

Met een vergrootglas kun je zien dat een zwart-wit afbeelding, bijvoorbeeld uit een krant, bestaat uit kleine puntjes die een bepaald patroon vormen - raster De nauwkeurigheid van de beeldoverdracht hangt af van het aantal punten en hun grootte. Nadat u de afbeelding in stippen hebt opgesplitst, beginnend vanuit de linkerhoek en langs de lijnen van links naar rechts bewegend, kunt u de kleur van elke stip coderen. Verder zal een zo'n punt een pixel worden genoemd. Pixel (beeldelement - beeldelement) - de minimale eenheid van de afbeelding, waarvan de kleur en helderheid onafhankelijk van de rest van de afbeelding kunnen worden ingesteld.

De belangrijkste manieren om afbeeldingen weer te geven voor opslag en verwerking met behulp van een computer zijn raster- en vectorafbeeldingen.

vector afbeelding is een grafisch object dat bestaat uit elementaire geometrische vormen (meestal segmenten en bogen). De positie van deze elementaire segmenten wordt bepaald door de coördinaten van de punten en de straalwaarde. Voor elke regel worden binaire codes voor het lijntype (ononderbroken, gestippeld, gestippeld), dikte en kleur aangegeven.

Bitmap vertegenwoordigt een reeks punten (pixels) die zijn verkregen als resultaat van beelddiscretisering in overeenstemming met het matrixprincipe. Het volume van een rasterbeeld wordt bepaald door het aantal pixels te vermenigvuldigen (met het informatievolume van één punt, dat afhangt van het aantal mogelijke kleuren. De kwaliteit van het beeld wordt bepaald door de resolutie van de monitor. Hoe hoger deze is d.w.z. hoe groter het aantal rasterlijnen en punten per lijn, hoe hoger de beeldkwaliteit. Gebruik op moderne pc's over het algemeen de volgende schermresoluties: 640x480, 800x600, 1024x768 en 1280x1024.

Het matrixprincipe van het coderen van grafische afbeeldingen is dat de afbeelding is verdeeld in een bepaald aantal rijen en kolommen. Vervolgens wordt elk element van het resulterende raster gecodeerd volgens de geselecteerde regel.

De beeldkwaliteit zal hoger zijn, hoe "dichter" de pixels zijn, dat wil zeggen, hoe groter de resolutie van het apparaat, en hoe nauwkeuriger de kleur van elk van hen is gecodeerd. Voor een zwart-wit afbeelding wordt de kleurcode van elke pixel gegeven door één bit: 1 - wit, 0 - zwart.

Als de afbeelding gekleurd is, wordt voor elk punt de binaire code van zijn kleur ingesteld.

Kleur modellen .

1) HSB-model Het wordt gekenmerkt door drie componenten: kleurtint (Hue), kleurverzadiging (Saturation) en kleurhelderheid (Helderheid). U kunt een groot aantal willekeurige kleuren krijgen door deze componenten aan te passen. Dit kleurmodel kan het beste worden gebruikt in die grafische editors waarin afbeeldingen zelf worden gemaakt en niet reeds voltooide afbeeldingen worden verwerkt. De kleurwaarde wordt gekozen als een vector die uit het midden van de cirkel komt. De richting van de vector wordt aangegeven in hoekgraden en bepaalt de kleurtint. De kleurverzadiging wordt bepaald door de lengte van de vector en de kleurhelderheid wordt gespecificeerd op een aparte as, waarvan het nulpunt zwart is. De stip in het midden komt overeen met een witte (neutrale) kleur en de stippen rond de omtrek komen overeen met pure kleuren.

2) RGB-methode principe: is als volgt: het is bekend dat elke kleur kan worden weergegeven als een combinatie van drie kleuren: rood (Rood, R), groen (Groen, G), blauw (Blauw, B). Andere kleuren en hun tinten worden verkregen door de aanwezigheid of afwezigheid van deze componenten. Dit kleurmodel is additief, dat wil zeggen dat elke kleur kan worden verkregen door een combinatie van primaire kleuren in verschillende verhoudingen. Wanneer een component van de primaire kleur op een andere wordt gesuperponeerd, neemt de helderheid van de totale straling toe. Als we alle drie de componenten combineren, krijgen we een achromatische grijze kleur, met een toename in helderheid waarvan een benadering tot wit optreedt.

3) Principe van de CMYK-methode. Dit kleurmodel wordt gebruikt bij het printklaar maken van publicaties. Aan elk van de primaire kleuren wordt een extra kleur toegewezen (als aanvulling op de primaire kleur op wit). Ze krijgen een extra kleur door een paar andere primaire kleuren op te tellen.Er zijn verschillende modi voor het presenteren van kleurenafbeeldingen:

a) volledige kleur (True Color);

c) index.

In de kleurenmodus worden 256 waarden (acht binaire cijfers) gebruikt om de helderheid van elk van de componenten te coderen, dat wil zeggen, 8 * 3 = 24 bits moeten worden besteed aan het coderen van de kleur van één pixel (in de RGB-systeem). Hiermee kunt u 16,5 miljoen kleuren op unieke wijze identificeren. Dit komt vrij dicht in de buurt van de gevoeligheid van het menselijk oog. Bij het coderen met het CMYK-systeem, om kleurenafbeeldingen weer te geven, moet u 8*4=32 bits hebben.

De High Color-modus is een 16-bits binaire codering, wat betekent dat het aantal binaire cijfers wordt verminderd bij het coderen van elk punt. Dit vermindert echter het bereik van gecodeerde kleuren aanzienlijk.

Met indexkleurcodering kunnen slechts 256 kleurtinten worden verzonden. Elke kleur is gecodeerd met acht bits aan gegevens. Maar aangezien 256 waarden niet het volledige scala aan kleuren weergeven dat beschikbaar is voor het menselijk oog, is het duidelijk dat een palet (referentietabel) aan de grafische gegevens is gekoppeld, zonder welke de reproductie onvoldoende zal zijn: de zee kan blijken rood en de bladeren blauw. De rasterpuntcode zelf betekent in dit geval niet de kleur zelf, maar alleen het nummer (index) in het palet. Vandaar de naam van de modus - index.

Het menselijk oog neemt kleurinformatie waar in het golflengtebereik van ongeveer 380 nm. (blauwe kleur) tot 770 nm. (rode kleur), en heeft de laagste gevoeligheid in het gebied van 520 nm. (groene kleur).

1.6 Audio-informatie coderen

De wereld is gevuld met een grote verscheidenheid aan geluiden: het tikken van klokken en het gerommel van motoren, het huilen van de wind en het ritselen van bladeren, het zingen van vogels en de stemmen van mensen. Over hoe geluiden worden geboren en wat ze vertegenwoordigen, begonnen mensen heel lang geleden te raden. Zelfs de oude Griekse filosoof en wetenschapper - encyclopedist Aristoteles, legde op basis van waarnemingen de aard van geluid uit, in de overtuiging dat een klinkend lichaam afwisselende compressie en verdunning van lucht creëert.

We kennen uit de natuurkunde dat geluid zijn luchttrillingen. Als je geluid omzet in een elektrisch signaal (bijvoorbeeld met een microfoon), zie je een spanning die in de loop van de tijd soepel verandert. Voor computerverwerking moet zo'n analoog signaal op de een of andere manier worden omgezet in een reeks binaire getallen.

Dit gebeurt bijvoorbeeld als volgt - de spanning wordt met regelmatige tussenpozen gemeten en de resulterende waarden worden vastgelegd in het geheugen van de computer. Dit proces wordt bemonstering (of digitalisering) genoemd en het apparaat dat het uitvoert, wordt een analoog-naar-digitaalomzetter (ADC) genoemd.

Om het geluid dat op deze manier is gecodeerd weer te geven, moet u de inverse conversie uitvoeren (hiervoor wordt een digitaal-naar-analoogomzetter gebruikt). - DAC), en maak vervolgens het resulterende stapsignaal glad.

Er zijn twee manieren om audio op te nemen: analoog en digitaal . Maar om geluid op een medium op te nemen, moet het worden omgezet in een elektrisch signaal. Dit gebeurt met een microfoon. De eenvoudigste microfoons hebben een membraan dat trilt onder invloed van geluidsgolven. Een spoel is bevestigd aan het membraan en beweegt synchroon met het membraan in een magnetisch veld. In de spoel wordt een elektrische wisselstroom opgewekt. Spanningsveranderingen weerspiegelen nauwkeurig geluidsgolven. De elektrische wisselstroom die aan de uitgang van een microfoon verschijnt, heet analoog signaal. Wanneer toegepast op een elektrisch signaal, betekent "analoog" dat het signaal continu is in tijd en amplitude. Het weerspiegelt nauwkeurig de vorm van de geluidsgolf die zich door de lucht voortplant.

Audio-informatie kan in discrete of analoge vorm worden weergegeven. Hun verschil is dat bij een discrete representatie van informatie de fysieke hoeveelheid abrupt verandert ("ladder") en een eindige reeks waarden aanneemt. Als de informatie in analoge vorm wordt gepresenteerd, kan de fysieke hoeveelheid een oneindig aantal waarden aannemen die continu veranderen.

Een vinylplaat is een voorbeeld van analoge opslag van geluidsinformatie, omdat de soundtrack continu van vorm verandert. Maar analoge bandopnames hebben een groot nadeel: de veroudering van de media. Een jaar lang kan een fonogram met een normaal niveau van hoge frequenties ze verliezen. Vinylplaten verliezen kwaliteit wanneer ze meerdere keren worden afgespeeld. Daarom wordt de voorkeur gegeven aan digitale opname.

Cd's verschenen in de vroege jaren '80. Ze zijn een voorbeeld van discrete opslag van audio-informatie, aangezien de audiotrack van een cd secties met verschillende reflectiviteit bevat. Theoretisch kunnen deze digitale schijven eeuwig meegaan als ze niet bekrast zijn, d.w.z. hun voordelen zijn duurzaamheid en weerstand tegen mechanische veroudering. Een ander voordeel is dat er bij digitaal dubben geen verlies aan geluidskwaliteit is.

Op multimedia geluidskaarten vind je een analoge microfoonvoorversterker en mixer.

Digitaal-naar-analoog en analoog-naar-digitaal conversie van geluidsinformatie.

Laten we eens kijken naar de processen van het omzetten van geluid van analoge naar digitale vorm en vice versa. Een globaal idee van wat er op de geluidskaart gebeurt, kan helpen om fouten te voorkomen bij het werken met geluid.

Geluidsgolven worden met behulp van een microfoon omgezet in een analoog wisselend elektrisch signaal. Het gaat door het audiopad (zie afbeelding 1) en gaat de analoog-naar-digitaalomzetter (ADC) binnen - een apparaat dat het signaal omzet in digitale vorm.

In een vereenvoudigde vorm is het werkingsprincipe van de ADC als volgt: hij meet de signaalamplitude met bepaalde intervallen en zendt verder, al langs het digitale pad, een reeks getallen uit die informatie over amplitudeveranderingen draagt ​​(zie figuur 1).

Tijdens A/D-conversie vindt geen fysieke conversie plaats. Het is alsof er een afdruk of monster wordt genomen van het elektrische signaal, dat een digitaal model is van spanningsschommelingen in het audiopad. Als dit in de vorm van een diagram wordt weergegeven, wordt dit model gepresenteerd als een reeks kolommen, die elk overeenkomen met een bepaalde numerieke waarde. Een digitaal signaal is inherent discreet, dat wil zeggen discontinu, dus het digitale model komt niet precies overeen met de vorm van het analoge signaal.

steekproef is het tijdsinterval tussen twee analoge signaalamplitudemetingen. Letterlijk wordt Sample uit het Engels vertaald als "sample". In multimedia- en professionele audioterminologie heeft dit woord verschillende betekenissen. Naast een tijdsperiode wordt een monster ook een reeks digitale gegevens genoemd die wordt verkregen door omzetting van analoog naar digitaal. Het conversieproces zelf heet bemonstering . In Russische technische taal noemen ze het discretisatie.

De uitvoer van digitaal geluid vindt plaats met behulp van een digitaal-naar-analoogomzetter (DAC), die op basis van de binnenkomende digitale gegevens op de juiste tijdstippen een elektrisch signaal met de vereiste amplitude genereert.

Opties bemonstering

Belangrijke bemonsteringsparameters zijn frequentie en bitdiepte.

Frequentie - aantal analoge signaalamplitudemetingen per seconde.

Als de bemonsteringsfrequentie niet meer dan tweemaal de frequentie van de bovengrens van het audiobereik is, is er verlies bij hoge frequenties. Dit verklaart waarom de standaardfrequentie voor een audio-cd 44,1 kHz is. Aangezien het bereik van geluidsgolfoscillaties in het bereik van 20 Hz tot 20 kHz ligt, moet het aantal signaalmetingen per seconde groter zijn dan het aantal oscillaties in dezelfde tijdsperiode. Als de bemonsteringsfrequentie veel lager is dan de frequentie van de geluidsgolf, heeft de signaalamplitude de tijd om meerdere keren te veranderen in de tijd tussen metingen, en dit leidt ertoe dat de digitale afdruk een chaotische gegevensset bevat. Bij een digitaal-naar-analoog conversie zendt zo'n sample niet het hoofdsignaal uit, maar produceert het alleen ruis.

In het nieuwe audio-dvd-formaat wordt het signaal in één seconde 96.000 keer gemeten, d.w.z. een bemonsteringsfrequentie van 96 kHz wordt gebruikt. Om ruimte op de harde schijf in multimediatoepassingen te besparen, worden vaak lagere frequenties gebruikt: 11, 22, 32 kHz. Dit leidt tot een afname van het hoorbare frequentiebereik, waardoor er een sterke vervorming is van het gehoorde.

Als je hetzelfde geluid tekent op 1 kHz (een noot tot het zevende octaaf van de piano komt ongeveer overeen met deze frequentie), maar gesampled op een andere frequentie (het onderste deel van de sinusoïde wordt niet in alle grafieken getoond), dan zijn verschillen zichtbaar zal zijn. Een verdeling op de horizontale as, die de tijd aangeeft, komt overeen met 10 monsters. Het is te zien dat er bij een frequentie van 11 kHz ongeveer vijf oscillaties van de geluidsgolf zijn voor elke 50 monsters, dat wil zeggen dat één periode van de sinusoïde wordt weergegeven met slechts 10 waarden. Dit is een nogal onnauwkeurige overdracht. Tegelijkertijd, als we de digitaliseringsfrequentie van 44 kHz beschouwen, zijn er voor elke periode van de sinusoïde al bijna 50 monsters. Hierdoor krijg je een signaal van goede kwaliteit.

Bit diepte geeft aan met welke nauwkeurigheid veranderingen in de amplitude van het analoge signaal optreden. De nauwkeurigheid waarmee de waarde van de signaalamplitude op elk moment tijdens de digitalisering wordt verzonden, bepaalt de kwaliteit van het signaal na digitaal-naar-analoog conversie. De betrouwbaarheid van golfvormreconstructie hangt af van de bitdiepte.

Het principe van binaire codering wordt gebruikt om de amplitudewaarde te coderen. Het geluidssignaal moet worden weergegeven als een reeks elektrische impulsen (binaire nullen en enen). Meestal wordt een 8-, 16-bits of 20-bits weergave van amplitudewaarden gebruikt. Bij binaire codering van een continu audiosignaal wordt het vervangen door een reeks discrete signaalniveaus. De kwaliteit van de codering is afhankelijk van de bemonsteringsfrequentie (het aantal metingen van het signaalniveau per tijdseenheid). Met een toename van de bemonsteringsfrequentie neemt de nauwkeurigheid van de binaire representatie van informatie toe. Bij een frequentie van 8 kHz (het aantal metingen per seconde 8000) komt de kwaliteit van het gesamplede audiosignaal overeen met de kwaliteit van radio-uitzendingen, en bij een frequentie van 48 kHz (het aantal metingen per seconde 48000) - de geluidskwaliteit van een audio-cd.

Als u 8-bits codering gebruikt, kunt u een nauwkeurigheid bereiken bij het wijzigen van de amplitude van het analoge signaal tot 1/256 van het dynamische bereik van een digitaal apparaat (28 = 256).

Als 16-bits codering wordt gebruikt om de amplitudewaarden van het audiosignaal weer te geven, dan zal de meetnauwkeurigheid toenemen met een factor 256.

In moderne converters is het gebruikelijk om 20-bits signaalcodering te gebruiken, wat het mogelijk maakt om hoogwaardige geluidsdigitalisering te verkrijgen.

Hoe hoger de bemonsteringsfrequentie en hoe meer bits aan elke sample worden toegewezen, hoe nauwkeuriger het geluid wordt weergegeven, maar de grootte van het geluidsbestand zal ook toenemen. Daarom worden, afhankelijk van de aard van het geluid, de vereisten voor de kwaliteit en de hoeveelheid ingenomen geheugen, enkele compromiswaarden gekozen.

De beschreven methode voor het coderen van geluidsinformatie is vrij universeel, het stelt je in staat om elk geluid weer te geven en het op verschillende manieren te transformeren. Maar er zijn momenten waarop het voordeliger is om anders te handelen.

Een vrij compacte manier om muziek weer te geven wordt al lang gebruikt - muzieknotatie. Het geeft met speciale symbolen aan hoe hoog de klank is, op welk instrument en hoe te spelen. In feite kan het worden beschouwd als een algoritme voor een muzikant, geschreven in een speciale vormentaal. In 1983 ontwikkelden toonaangevende fabrikanten van computers en muzieksynthesizers een standaard die een dergelijk systeem van codes definieerde. Het heet MIDI.

Natuurlijk kun je met zo'n coderingssysteem niet elk geluid opnemen, het is alleen geschikt voor instrumentale muziek. Maar het heeft ook onmiskenbare voordelen: een extreem compacte opname, natuurlijkheid voor een muzikant (bijna elke MIDI-editor kun je met muziek werken in de vorm van gewone noten), het gemak van het wisselen van instrumenten, het veranderen van het tempo en de toonsoort van de melodie.

Er zijn andere, puur computer, muziekopnameformaten. Een daarvan is het MP3-formaat, waarmee muziek kan worden gecodeerd met een zeer hoge kwaliteit en compressieverhouding, terwijl in plaats van 18-20 muziekcomposities er ongeveer 200 op een standaard compact disc (CD-ROM) worden geplaatst.Een nummer beslaat ongeveer 3,5 Mb, wat staat toe Het is gemakkelijk voor internetgebruikers om muzikale composities uit te wisselen.

Het menselijk oor neemt geluid waar in het bereik van 20 Hz tot 20 kHz (1 Hz - 1 trilling per seconde).

1.7 Huffman-algoritme

Dit is een lossless archiveringsalgoritme. Laten we ons het meest algemene geval voorstellen, wanneer het bestand het grootste deel van de ASCII-tabel bevat en bijna geen homogene reeksen. In dit geval kan het voordeel alleen worden behaald als verschillende bytes (tekens) in een bepaald bestand met verschillende frequenties voorkomen. Dan kunnen de meest voorkomende karakters worden gecodeerd met een kleiner aantal bits, en die die vrij zeldzaam zijn juist met een groot aantal bits. Als gevolg hiervan is het resulterende bestand waarschijnlijk kleiner dan het oorspronkelijke bestand.

Alvorens een hercoderingsalgoritme te beschrijven waarmee de meest voorkomende tekens (bytes) niet met acht, maar met een veel kleiner aantal bits kunnen worden gecodeerd, moet men wijzen op de beperkingen die inherent zijn aan elk, zelfs het meest efficiënte, verliesvrije algoritme.

Het is denkbaar dat alle bestanden teksten zijn die zijn geschreven in een alfabet van 256 letters (zo is het eigenlijk). Beschouw de hele set bestanden waarvan de grootte niet groter is dan n bytes (waarbij n een willekeurig getal is). En laten we zeggen dat er een coderingsalgoritme is dat al deze bestanden comprimeert met "positieve" efficiëntie. Dan is de verzameling van al hun archieven opgenomen in de verzameling van alle bestanden waarvan de grootte kleiner is dan n byte. Volgens onze aanname is er een één-op-één overeenkomst tussen twee eindige verzamelingen, waarvan het aantal elementen niet overeenkomt. Wat kan niet. Hieruit kunnen we behoorlijk belangrijke conclusies trekken: 1) er is geen archiver die alle bestanden even goed zou inpakken, 2) voor elke archiver zijn er bestanden, als resultaat van compressie waarvan archieven in het gunstigste geval niet kleiner dan de bronbestanden.

1.8 Lempel-Ziva-coderingsalgoritme

AlgoritmeLempel -- Ziva-- Vemlcha is een algoritme voor gegevenscompressie zonder verlies voor algemeen gebruik, gemaakt door Abraham Lempel, Jakob Ziv en Terry Welch. Het werd in 1984 door Welch gepubliceerd als een verbeterde implementatie van het algoritme LZ78 uitgegeven door Lempel en Ziv in 1978 jaar. Het algoritme is ontworpen om snel te implementeren, maar is niet per se optimaal omdat het geen analyse uitvoert op de invoer.

Lemel en Ziv gebruiken het volgende idee: als een reeks van twee eerder aangetroffen tekens in de berichttekst verschijnt, wordt deze reeks tot een nieuw teken verklaard, wordt er een code aan toegewezen die, onder bepaalde voorwaarden, aanzienlijk korter kan zijn dan de originele volgorde. Vervolgens wordt de toegewezen code in het gecomprimeerde bericht geschreven in plaats van in de oorspronkelijke volgorde. Bij het decoderen worden soortgelijke acties herhaald en daarom worden de tekenreeksen voor elke code bekend.

Een van de algoritmische implementaties van dit idee omvat de volgende bewerkingen. In eerste instantie krijgt elk teken van het alfabet een specifieke code toegewezen (codes zijn serienummers beginnend bij 0).

Bij codering :

1. Het eerste teken van het bericht wordt geselecteerd en vervangen door de bijbehorende code.

2. De volgende twee karakters worden geselecteerd en vervangen door hun codes. Tegelijkertijd krijgt deze combinatie van twee tekens een eigen code. Dit is meestal een getal gelijk aan het aantal reeds gebruikte codes. Dus als het alfabet 8 tekens bevat met codes van 000 tot 111, dan ontvangt de eerste combinatie van twee tekens de code 1000, de volgende - de code 1001, enzovoort.

3. De volgende 2, 3, ... N karakters worden uit de brontekst geselecteerd totdat een nog niet aangetroffen combinatie is gevormd. Vervolgens wordt aan deze combinatie de volgende code toegekend, en aangezien aan set A van de eerste N-1 tekens al is voldaan, heeft deze zijn eigen code, die in plaats van deze N-1 tekens wordt geschreven. Elke handeling waarbij een nieuwe code wordt ingevoerd, wordt een codeerstap genoemd.

4. Het proces gaat door totdat de brontekst op is.

Bij decoderen de code van het eerste teken, en vervolgens worden de tweede en derde vervangen door alfabetische tekens. In dit geval wordt de code van de combinatie van het tweede en derde karakter bekend. In de volgende positie kunnen er alleen codes zijn van reeds bekende karakters en hun combinaties. Het decoderingsproces gaat door totdat de gecomprimeerde tekst op is.

1.9 Escape-codes

Controle van de juistheid (ruisimmuniteit) van informatieoverdracht wordt uitgevoerd met behulp van ruisimmuuncodering. Er wordt onderscheid gemaakt tussen foutdetectiecodes en correctieve codes, die naast detectie ook fouten corrigeren. Ruisimmuniteit wordt bereikt door redundantie in te voeren. Problemen oplossen met correctiecodes geïmplementeerd in simplex communicatiekanalen. In duplexkanalen is het voldoende om codes te gebruiken, onthullend X fouten omdat foutsignalering een hertransmissie van de bron veroorzaakt. Dit zijn de belangrijkste methoden die in informatienetwerken worden gebruikt.

De eenvoudigste manieren om fouten te detecteren zijn checksumming, oneven pariteit. Ze zijn echter niet betrouwbaar genoeg, vooral wanneer er uitbarstingen van fouten optreden. Daarom, als betrouwbare detectiecodes, cyclische codes . Een voorbeeld van een corrigerende code is een Hamming-code.

Momenteel is het tempo van de ontwikkeling van telecommunicatiesystemen een voorwaarde geworden voor de opkomst van fundamenteel nieuwe manieren om berichten te coderen. Bovendien was een van de taken van het coderen niet alleen betrouwbare verzending, maar ook snelle gegevensverwerking. Ondanks de groei van de kracht van computertechnologie, blijft de kwestie van het construeren van eenvoudige foutcorrectie-algoritmen relevant. Een van de weinig bestudeerde gebieden op dit gebied kan worden beschouwd als het gebruik van codes met een irrationele basis.

Het werk van de overgrote meerderheid van moderne communicatiesystemen is gebaseerd op de overdracht van berichten in digitale vorm. Als u geen enkel element van digitale gegevens ontvangt, kan dit een aanzienlijke vervorming van het hele bericht als geheel veroorzaken, wat op zijn beurt kan leiden tot een volledig verlies van de informatie die erin staat. Een zeer effectief middel om dit probleem op te lossen is het gebruik van foutcorrigerende codering op basis van de introductie van kunstmatige redundantie in het verzonden bericht. Opgemerkt moet worden dat in moderne informatiesystemen de belangrijkste taak het waarborgen van informatiebeveiliging is die verband houdt met de methoden van cryptografie en codering, waarvan Shannon de theoretische basis heeft gelegd in zijn geschriften.

In de jaren 50-70 werd een groot aantal foutcorrigerende algebraïsche codes ontwikkeld, waaronder de Bose-Chowdhury-Hokvingham (BCH), Reed-Solomon (RS), Reed-Mahler, Hadamard, Joostensen, Goppa-codes werden de meest populaire, cyclische codes, convolutionele codes met verschillende decoderingsalgoritmen (sequentiële decodering, Viterbi-algoritme), rekenkundige codes.

In de praktijk wordt echter een relatief kleine groep algebraïsche foutcorrigerende codes gebruikt: BCH, Reed-Solomon en ultraprecieze codes. De meest gebruikte cyclische foutdetectiecodes zijn standaard HDLC-protocollen, X.25/2 (LAP-B, LAP-M). Foutcorrigerende Reed-Solomon-codes worden gebruikt in radiocommunicatiekanalen. In satellietcommunicatiekanalen, die worden gekenmerkt door het onafhankelijke karakter van fouten, worden op grote schaal superprecieze codes gebruikt.

Opgemerkt moet worden dat hoewel de momenteel bestaande datatransmissiesystemen aan alle basisnormen en -vereisten voldoen, ze nog steeds niet perfect zijn. De redenen hiervoor zijn de invloed van interferentie in het communicatiekanaal. Een van de manieren om dergelijke inconsistenties in digitale informatietransmissiesystemen op te lossen, is het gebruik van foutcorrigerende codes die ten grondslag liggen aan codeer-/decodeerinrichtingen.

De ruis-immuuncodering van de verzonden informatie maakt het mogelijk fouten in het ontvangende deel van het systeem op te sporen en te corrigeren. De codes die bij foutcorrigerende codering worden gebruikt, worden correctiecodes genoemd. Doorgaans kan corrigerende code minder fouten oplossen dan het kan detecteren. Het aantal fouten dat een corrigerende code kan corrigeren in een bepaald interval van een reeks binaire symbolen, bijvoorbeeld in één codewoord, wordt het corrigerend vermogen van de code genoemd.

In verschillende omgevingen is de aard van interferentie anders. Fouten kunnen enkelvoudig zijn, of ze kunnen in groepen voorkomen, meerdere tegelijk. Als gevolg van interferentie kunnen bits verdwijnen of vice versa - er kunnen extra bits verschijnen.

Onder interferentie wordt elk effect verstaan ​​dat op een bruikbaar signaal wordt gelegd en het moeilijk maakt om het te ontvangen.

1.10 De stellingen van Shannon

Eerder werd opgemerkt dat bij het verzenden van berichten via communicatiekanalen interferentie kan optreden die kan leiden tot vervorming van de ontvangen karakters. Dus als u bijvoorbeeld bij winderig weer een spraakbericht probeert te verzenden naar een persoon die zich op aanzienlijke afstand van u bevindt, dan kan het sterk worden vervormd door interferentie als de wind. Over het algemeen is het verzenden van berichten in aanwezigheid van interferentie een serieus theoretisch en praktisch probleem. Het belang ervan groeit in verband met de wijdverbreide introductie van computertelecommunicatie, waarbij interferentie onvermijdelijk is.

Bij het werken met gecodeerde informatie die door interferentie is vervormd, kunnen de volgende hoofdproblemen worden onderscheiden: het vaststellen van het feit dat informatie is vervormd; uitzoeken op welke specifieke plaats van de verzonden tekst dit is gebeurd; bugfixes - in ieder geval met enige mate van zekerheid.

Interferentie in de overdracht van informatie is niet alleen een eigenschap van technische systemen. Dit is vrij gebruikelijk in het dagelijks leven, bijvoorbeeld praten aan de telefoon, in de handset waarvan het "barst", autorijden in de mist, enz.

Elk fragment van de tekst ("zin") wordt bijvoorbeeld drie keer verzonden en het paar fragmenten dat volledig overeenkomt, wordt als correct beschouwd. Een grote redundantie leidt echter tot hoge tijdskosten bij de overdracht van informatie en vereist een grote hoeveelheid geheugen voor de opslag ervan. Hieruit volgt het probleem van het elimineren van redundantie of efficiënte codering. Voor de eerste keer werd een theoretische studie van dergelijke problemen uitgevoerd door K. Shannon.

Shannon's eerste stelling over de overdracht van informatie, ook wel de hoofdstelling over codering bij afwezigheid van interferentie genoemd, wordt als volgt geformuleerd:

Bij afwezigheid van transmissie-interferentie is een dergelijke variant van berichtcodering altijd mogelijk, waarbij de coderedundantie willekeurig dicht bij nul zal zijn.

Shannon's tweede stelling stelt dat het in aanwezigheid van interferentie in het kanaal altijd mogelijk is om een ​​dergelijk coderingssysteem te vinden waarin berichten met een bepaalde betrouwbaarheid worden verzonden. Als er een limiet is, moet de bandbreedte van het kanaal de capaciteit van de berichtenbron overschrijden. De tweede stelling van Shannon legt de principes van foutcorrigerende codering vast. Voor een kanaal met discrete ruis stelt de stelling dat als de snelheid waarmee een bericht wordt gemaakt kleiner is dan of gelijk is aan de capaciteit van het kanaal, er een code is die zorgt voor verzending met een willekeurig laag foutenpercentage.

Deze stelling geeft geen specifieke methode voor het construeren van een code, maar geeft de grenzen aan die haalbaar zijn op het gebied van foutcorrigerende codering, en stimuleert het zoeken naar nieuwe manieren om dit probleem op te lossen.

2 Praktijkgedeelte

Programma voor het coderen van informatie

Informatiecodering is een van de basisonderwerpen van de cursus van de theoretische grondslagen van de informatica, en weerspiegelt de fundamentele behoefte om informatie in een of andere vorm te presenteren, d.w.z. informatie codering. Tegelijkertijd wordt het woord "codering" niet in enge zin opgevat - codering als een manier om een ​​bericht onbegrijpelijk te maken voor iedereen die niet over de codesleutel beschikt, maar in brede zin - als een presentatie van informatie in de vorm van een bericht in welke taal dan ook.

De behandeling van dit onderwerp in de cursus informatica is mogelijk vanuit verschillende invalshoeken en op verschillende niveaus. De eenvoudigste benadering is om het concept van codering te beschouwen als een weergave van informatie in een inleidend, algemeen onderwijsplan. Een meer geavanceerde benadering omvat het bestuderen van codeertheorie. In deze workshop focussen we op vrij elementaire informatie over coderen die van algemeen educatief belang is, en laten we een serieuze kennismaking met codeertheorie achter voor schoolkinderen.

Over dit onderwerp heb ik een programma ontwikkeld voor leerlingen van groep 8-9. Het programma is geschreven in de programmeertaal Delphi6 en heet Flag Alphabet Coding.

De essentie van het programma: We voeren een bericht in uit Russische letters, het programma geeft het gecodeerde bericht weer in de vorm van vlaggen, volgens een bepaalde regel (coderingstabel): aan elke letter wordt een bepaalde vlag toegewezen.

Het formulier bevat de volgende onderdelen::

Componentenlijst met afbeeldingen (ImageList)

Dit onderdeel bevindt zich in het Win32-paneel. Het werkt met een grafisch beeld, het stelt u in staat om reeksen afbeeldingen van een vaste grootte op te slaan, en we zullen naar de afbeelding verwijzen (er zijn er 34 in ons programma) met cijfers en afbeeldingen op het scherm weergeven;

Component Tekengebied (PaintBox)

Bevindt zich in het systeempaneel. We gebruiken het om grafische informatie (vlaggen) weer te geven.

Tekstveld (bewerken)

Bevindt zich op het standaardpaneel. Het veld waarin we het bericht zullen invoeren om het te coderen;

Knop

Bevindt zich op het standaardpaneel. 1 knop "wissen" (u kunt het bericht in het tekstveld wissen en een nieuwe schrijven), 2 knop "coderen" (codeert het bericht dat in het tekstveld is ingevoerd en geeft het reeds gecodeerde bericht in PaintBox weer), 3 " codeertabel”-knop (geeft de tabel weer in een nieuwe vorm waarin u kunt zien welke letter overeenkomt met het selectievakje);

Label

Bevindt zich op het standaardpaneel Bevat informatie dat het bericht niet langer mag zijn dan 27 tekens;

Paneel (Paneel)

Het paneel bevat PaintBox , is nodig om visueel te zien waar het bericht wordt weergegeven.

Bijlage

Code voor berichtcodering

procedure TForm1.Button1Click (Afzender: TObject);

als lengte(s)>27 dan

ShowMessage("bericht van meer dan 27 tekens");

voor i:= 1 tot lengte(s) do

als (s[i]="a") of (s[i]="A") dan

als (s[i]="b") of (s[i]="b") dan

if (s[i]="to") of (s[i]="to") dan

als (s[i]="r") of (s[i]="r") dan

if (s[i]="d") of (s[i]="d") dan

if (s[i]="e")of (s[i]="E") dan

if (s[i]="ё")of (s[i]="ё") then

if (s[i]="W") of (s[i]="W") dan

als (s[i]="h") of (s[i]="h") dan

if (s[i]="en") of (s[i]="and") dan

als (s[i]="de") of (s[i]="de") dan

if (s[i]="to") of (s[i]="to") dan

if (s[i]="l") of (s[i]="l") dan

als (s[i]="M") of (s[i]="M") dan

als (s[i]="n") of (s[i]="n") dan

if (s[i]="0") of (s[i]="0") dan

als (s[i]="p") of (s[i]="p") dan

als (s[i]="p") of (s[i]="p") dan

if (s[i]="с") of (s[i]="С") dan

if (s[i]="t") of (s[i]="t") dan

als (s[i]="y") of (s[i]="y") dan

if (s[i]="f") of (s[i]="f") dan

if (s[i]="x") of (s[i]="x") dan

if (s[i]="c") of (s[i]="c") dan

als (s[i]="h") of (s[i]="h") dan

als (s[i]="w") of (s[i]="w") dan

if (s[i]="w") of (s[i]="w") dan

if (s[i]="b")of (s[i]="b") dan

if (s[i]="s") of (s[i]="s") dan

als (s[i]="b") of (s[i]="b") dan

als (s[i]="e") of (s[i]="e") dan

if (s[i]="u") of (s[i]="u") dan

als (s[i]="I") of (s[i]="I") dan

if s[i]=" " dan

ImageList1.Draw(PaintBox1.Canvas,35*i,5,k,true);

schoonmaakberichten.

procedure TForm1.Button3Click (Afzender: TObject);

Kijkentafelcodering.

procedure TForm1.Button2Click (Afzender: TObject);

Conclusie

In korte tijd is een computer veranderd van een computerapparaat in een apparaat voor het verwerken van vele soorten informatie: tekst, afbeeldingen, geluid. Met behulp van een computer wordt informatie verpakt en versleuteld, gaat het via verschillende communicatiekanalen en kan het naar elke uithoek van de wereld worden afgeleverd. De moderne mens kan zich zijn activiteit niet meer voorstellen zonder het gebruik van een computer. Hoe informatie kan worden weergegeven in een computer, hoe deze wordt verzonden via communicatiekanalen - we krijgen antwoord op al deze vragen na het onderwerp "Informatiecodering" te hebben bestudeerd. Informatie over informatie, talen als manieren om informatie te presenteren, over het coderen van informatie zonder een computer, over binaire codering, over nummersystemen, over het coderen van informatie in een computer - al deze kwesties moeten worden opgenomen in de inhoud van de federale component van de onderwijsstandaard van de schoolopleiding informatica.

Lijst met gebruikte bronnen

1. Delphi 7. Trainingscursus / S. I. Bobrovsky. - Sint-Petersburg: Peter, 2003.

2. Taakboek informatica: Proc. Voordeel voor woensdag. School / Paul red. I. Semakin, E. Henner. Moskou: Basiskennislaboratorium, 1999.

3. Informatica: Basiscursus voor 7 - 9 cellen. / I.G. Semakin, L.A. Zalogova, S.V. Rusakov, L.V. Shestakova - M.: Basiskennislaboratorium, 1998.

4. Informatica. 7 - 9 cellen. Basiscursus. Leerboek. / Onder. red. prof. N.V. Makarova. - Sint-Petersburg: Peter, 2002.

5. Informatica: Leerboek voor studenten. ped. Universiteiten / A. V. Mogilev, N. I. Pak, E. K. Khenner; Ed. E.K. Henner. - 2e druk, ster. - M.: Uitgeverijcentrum "Academy".

6. Kushnirenko A.G., Lebedev G.V., Svoren R.A. Grondbeginselen van informatica en computertechnologie: Proc. Voor 10 - 11 cellen. gem. school, - M.: Onderwijs, 1996.

7. Grondbeginselen van informatietheorie en codering. Leerboek / V.V. Krushny - M., 2005.

8. Trofimova M.V. De hoeveelheid informatie meten // Informatica: Ezhened. bn. te gassen. "Eerste september". nr. 2. 2000.

9. Codeertheorie en informatietheorie. Textbook / R. V. Hemming - M.: Uitgever: Radio en Communicatie, 1985.

10. URL: //sdo.uspi.ru/mathem&inform/lek8/lek_8.htm

11. URL: en.wikipedia.org/wiki/Lempel-Ziv-Welch

Gehost op Allbest.ru

...

Vergelijkbare documenten

    Weergave van informatie in een binair systeem. De noodzaak van codering bij het programmeren. Codering van grafische informatie, cijfers, tekst, geluid. Het verschil tussen codering en codering. Binaire codering van karakter (tekst) informatie.

    samenvatting, toegevoegd 27-03-2010

    Vertegenwoordiging van numerieke informatie met behulp van getalsystemen. Coderen van symbolische, tekstuele, numerieke en grafische informatie. harde schijf apparaat; CD ROM drive. Het Windows-hoofdmenu gebruiken; programmeertalen.

    test, toegevoegd 16-03-2015

    Kennismaking met het idee van een vectormanier om afbeeldingen in digitale vorm weer te geven. Ontwikkeling van een reeks commando's voor het coderen van een grafisch object. Basis commando's; binaire codering van grafische informatie, raster- en vectorvarianten.

    presentatie, toegevoegd 01/05/2012

    Technologie voor het verwerken van grafische informatie met behulp van een pc, toepassing in wetenschappelijk en militair onderzoek: vormen, informatiecodering, ruimtelijke discretisatie. Creatie en opslag van grafische objecten, hulpmiddelen voor het verwerken van vectorafbeeldingen.

    samenvatting, toegevoegd 28-11-2010

    Coderen is het proces van het presenteren van informatie in de vorm van een code. Codering van audio- en video-informatie, kenmerken van het proces van vorming van een bepaalde representatie van informatie. Kenmerken van een universele gebruiksvriendelijke interface.

    test, toegevoegd 22-04-2011

    Informatie en informatieprocessen in de natuur, samenleving, technologie. Informatieactiviteit van een persoon. Informatie codering. codering methoden. Afbeelding codering. Informatie in cybernetica. Informatie eigenschappen. Het meten van de hoeveelheid informatie.

    samenvatting, toegevoegd 18-11-2008

    De plaats van het onderwerp "Informatiecodering" in de schoolcursus informatica. Aanbevelingen voor de studie van "Informatiecodering" in de schoolopleiding informatica. Didactisch materiaal voor het bestuderen van het onderwerp "Informatiecodering" en een buitenschoolse activiteit in de informatica.

    scriptie, toegevoegd 17-06-2012

    Codering van symbolische en numerieke informatie. Basis nummersystemen. Binair getalsysteem. Apparaten voor informatie-uitvoer. Regels voor het uitvoeren van rekenkundige bewerkingen. Logische fundamenten van constructie, functionele eenheden van computers. Synthese van logische circuits.

    presentatie, toegevoegd 11/08/2016

    Methoden voor rekenkundig coderen. De belangrijkste functies van programma's die coderingsalgoritmen implementeren met behulp van de Huffman-, Golomb-, Fibonacci- en Elias-methoden. Ontwikkeling van software en hardware voor optimale rekenkundige codering en hun economische berekening.

    proefschrift, toegevoegd 26-05-2012

    Het concept van informatie en de basisprincipes van de codering, de gebruikte methoden en technieken, hulpmiddelen en taken. Specifieke kenmerken van de processen van het coderen van digitale en tekstuele, grafische en audio-informatie. De logische basis van de computer.

  1. Laten we onze website als voorbeeld nemen: www.yourmaster.ru
  2. Alle siteteksten zijn in codering geschreven en op de site geplaatst "windows-1251" en de browser wordt hier niet over geïnformeerd
  3. De hostingserver stuurt standaard automatisch de volgende header:
    Inhoudstype: tekst/html; charset=utf-8

Met zo'n discrepantie tussen de daadwerkelijke codering van de site en de informatie over de codering in de header die door de server wordt verzonden, zullen er problemen zijn met het weergeven van de pagina's van de site in de browser van bezoekers.

Correcte codering is erg belangrijk!

Laten we proberen uit te leggen waarom.

Met de hierboven beschreven instellingen kan de browser van de gebruiker niet automatisch bepalen in welke codering de teksten op de bekeken site zijn geschreven. En hoogstwaarschijnlijk zal het pagina's weergeven in onleesbare "krakozyabra". Als u een dergelijk "misverstand" tussen uw browser en uw site tegenkomt, moet u met spoed passende maatregelen nemen. Anders zal dit hoogstwaarschijnlijk leiden tot een reeks ernstige problemen.

Allereerst, in dergelijke omstandigheden en site-instellingen, zullen bezoekers constant handmatig (door selectie) aan de browser de codering moeten aangeven om de site weer te geven. Hiervoor zijn een paar extra muisklikken nodig. Maar je moet toegeven dat niet iedereen graag 2-3 extra muisklikken wil maken om de informatie op de pagina in een leesbare vorm te zien. Bovendien weten veel mensen niet eens hoe ze de weergavecodering in de browserinstellingen moeten wijzigen, maar ook wat codering in het algemeen is! De meeste bezoekers kunnen besluiten dat de site door de eigenaar is verlaten of door iemand is gehackt, en zullen proberen er niet meer naar terug te keren.

ten tweede, in geval van dubbelzinnige definitie van de codering van de sitepagina's, Zoekmachines kunnen de tekstinhoud van de site mogelijk niet correct indexeren.. Wat op zijn beurt ernstige problemen met het gebruikersverkeer van zoekmachines met zich meebrengt. Natuurlijk kunnen sommige zoekmachines proberen om op de een of andere manier de juiste codering van de inhoud van de pagina's te bepalen, maar dit maakt het niet veel gemakkelijker. In de regel blijft het probleem bestaan.

Ik hoop dat je je realiseert dat coderingsproblemen een zeer ernstig obstakel kunnen worden in het functioneren van de site, in de ontwikkeling ervan en het aantrekken van regelmatige bezoekers.

Om dergelijke problemen met codering te voorkomen, moet u de juiste instellingen maken, zowel op de hostingserver als op de sitepagina's.

De site-instellingen moeten zodanig zijn dat elke browser of elke robot van een zoekmachine ONINFORMEEL kan bepalen in welke codering de informatie van de site wordt verzonden!

Het probleem met de codering van de site oplossen

We hebben al opgemerkt dat alle teksten op onze site in de "windows-1251"-codering worden geschreven en verzonden naar de browser van de sitebezoeker. Wat te doen zodat de server die onze site host de juiste informatie over de codering naar de browser in de header verzendt? Laten we in volgorde gaan...

1. Om niet afhankelijk te zijn van serverinstellingen, schrijf op alle pagina's van de site, direct in de HTML-code, met behulp van de metatag, expliciet de volgende instructie:

Het moet op alle pagina's worden geplaatst, bij voorkeur direct na de openingstag . Hierdoor kan de browser automatisch de juiste weergavecodering selecteren volgens de ontvangen instructie wanneer de pagina wordt geladen en geïnterpreteerd! Deze richtlijn alleen zou voldoende moeten zijn om ons probleem op te lossen. Maar zo was het in theorie. Maar in de praktijk is deze richtlijn niet altijd voldoende. In zeldzame gevallen, maar het komt voor dat de browser niet degene kiest die is gespecificeerd in de richtlijn op de pagina zelf als de codering voor het weergeven van de pagina, maar degene die in de header van de server is verzonden! En als de coderingsinformatie die op twee plaatsen is opgegeven niet overeenkomt, blijft het probleem mogelijk.

2. Om ervoor te zorgen dat de server de juiste informatie over de codering in zijn antwoord retourneert, moet u een bestand maken in de hoofdmap van uw site .htaccess en voeg er de volgende richtlijn aan toe:

AddDefaultCharset windows-1251

Dan blijft de server standaard de header over de codering verzenden, maar de naam van de codering komt overeen met de naam die van kracht is op de site zelf. Er zullen geen mismatches meer zijn in de namen.

Als het bestand .htaccess bestaat al op uw server, voeg dan de gespecificeerde instructie toe, bijvoorbeeld helemaal aan het begin. En verwijder in geen geval onnodig de informatie die er al in bestaat!

Dat is de enige oplossing voor het probleem. Mee eens, dit is allemaal niet zo moeilijk?! Maar het is erg handig om allerlei problemen met de beruchte codering te voorkomen.

Door de twee bovenstaande aanbevelingen achter elkaar op te volgen, zullen browsers zeker geen fout kunnen maken bij het automatisch kiezen van de juiste codering voor het weergeven van informatie op uw site. We hebben immers ondubbelzinnig, correct en zelfs in twee verschillende richtlijnen informatie over de codering aangegeven!

Bijzondere situaties

Situatie één:

De makers van de site, en vaker zelfs de klanten zelf, beginnen willekeurig en gedachteloos bepaalde verbeteringen aan de site aan te brengen, teksten te plaatsen zoals ze willen, enzovoort. secties met informatie in verschillende coderingen. We kunnen niet zeggen dat dit de juiste aanpak is, maar we zullen het afwijzen omdat het gebeurt en dat is het dan. In dit geval, zelfs als we de bovenstaande twee aanbevelingen volgen, kan er nog steeds een situatie ontstaan ​​waarin de server informatie zal verstrekken over één codering, en een andere codering zal expliciet worden geschreven in de HTML-code van de pagina. In zo'n geval zou de eenvoudigste oplossing misschien de volgende zijn.

Schrijf naar bestand .htaccess richtlijn:

AddDefaultCharset Uit

Bij gebruik van deze richtlijn zal de server gewoon helemaal geen header verzenden met informatie over de codering van de verzonden pagina. Vervolgens gaan browsers uit van de coderingsgegevens die expliciet zijn gespecificeerd in de HTML-code op de sitepagina's zelf. Tegelijkertijd kunnen gegevens op één pagina worden gecodeerd windows-1251, en op een andere pagina, bijvoorbeeld in utf-8. Het belangrijkste is om niet te vergeten om op deze pagina's de juiste metatags aan te geven met informatie over de juiste codering voor tekstherkenning en weergave door de browser.

Zo'n oplossing, hoewel de eenvoudigste, maar misschien niet de meest optimale en correcte. Op een goede manier moet je alle informatie op de site en in alle secties van de site in dezelfde codering plaatsen! En als er meerdere pagina's in een verschillende codering zijn, is het beter om de informatie daarin bij te werken door alle teksten om te zetten in de vereiste codering.

Situatie twee

Zoals u weet, selecteren de meeste sites bij het genereren van pagina's een deel van de gegevens uit een database, bijvoorbeeld MySQL (als de site in PHP is geschreven). Vaak, Bijeen website van de ene host naar de andere verplaatsen, kunnen er problemen optreden als gevolg van een mismatch van coderingen tussen de gegevens die zijn opgeslagen in de MySQL-database en de gegevens die bijvoorbeeld rechtstreeks in sitesjablonen zijn opgeslagen. Er kan zich dus een situatie voordoen dat bij het vormen van één pagina deze gegevens in verschillende coderingen kan bevatten. Misschien is dit een van de ernstigste mogelijke fouten met de codering op de site en moet deze onmiddellijk worden aangepakt. Anders kunnen er extra problemen ontstaan ​​bij het vullen en bewerken van de site.

Het oplossen van dergelijke discrepanties met de gegevens die in de database zijn opgeslagen, wordt bereikt door de coderingsinstellingen correct expliciet in te stellen bij het verbinden met de database en voordat gegevens worden opgehaald. Als de gegevens op de site bijvoorbeeld zijn opgeslagen in de windows-1251-codering, dan moeten we de gegevens uit de database in dezelfde codering lezen. Om dit te doen, voert u de volgende SQL-query uit nadat u verbinding hebt gemaakt met de database met behulp van de PHP mysql_connect() (of mysql_pconnect())-functie:

mysql_query("NAMEN INSTELLEN cp1251");

Deze query vertelt de MySQL-databaseserver dat alle gegevens zijn opgeslagen en moeten worden verzonden in de cp1251-codering (dit is de naam van de codering die wordt gebruikt in MySQL in plaats van de eerder genoemde windows-1251, die wordt gebruikt bij het doorgeven van HTML-gegevens).

Maar het is het beste om de gegevenscodering in de MySql-database te wijzigen in degene die op de site zelf wordt gebruikt. Dan hoeft de databaseserver geen onnodige bewerking uit te voeren om gegevens van het ene formaat naar het andere te converteren.

op een notitie

Als je een site hebt bezocht die om de een of andere reden de codering is kwijtgeraakt, maar je er echt nuttige informatie over nodig hebt (zonder te wachten tot de site-ontwikkelaars de aanbevelingen volgen die we hierboven hebben vermeld), dan moet je handmatig de juiste paginacodering opgeven in uw browserinstellingen. U kunt dit meestal doen via het hoofdmenu van de browser: Weergave -> codering-> Selecteer vervolgens de naam van de voorgestelde paginacodering uit de lijst. Misschien moet u, om te raden, deze procedure meer dan eens uitvoeren, waarbij u de ene of de andere naam kiest uit de lijst met coderingen. Om het selectieproces te versnellen, raden we aan om ze in de volgende volgorde te doorlopen: Cyrillisch (Windows-1251), Cyrillisch (UTF-8), Cyrillisch (KOI8-R). Dit zijn de meest gebruikte coderingen op sites in Runet.

Een van de meest voorkomende problemen waarmee een beginner wordt geconfronteerd webmaster(en niet alleen beginners), het is coderingsproblemen met websites. Zelfs ik verschijn constant bij het maken van sites " abracadabra". Maar gelukkig weet ik heel goed hoe ik dit probleem moet oplossen, dus ik heb binnen een paar seconden alles op orde gebracht. En in dit artikel zal ik proberen je zo snel coderingsproblemen op de site oplossen.

Het eerste dat moet worden opgemerkt, is dat alle problemen met het uiterlijk van "abracadabra" worden geassocieerd met een mismatch tussen de codering van het document en de codering die door de browser is ingesteld. Laten we zeggen dat het document is windows-1251, en de browser onthult om de een of andere reden UTF-8. En de volgende redenen kunnen al de oorzaak zijn van een dergelijke discrepantie.

eerste reden:

Ongeldige metatag inhoudstype. Wees voorzichtig, het moet altijd de codering bevatten waarin uw document is geschreven.

De tweede reden:

Het lijkt erop dat de metatag is geschreven zoals u dat wilt, en de browser geeft precies weer wat u wilt, maar om de een of andere reden is er nog steeds een probleem met de codering. Hier is vrijwel zeker het feit dat het document zelf een andere codering heeft de schuld. Als u werkt in Kladblok++, dan staat rechtsonder de naam van de codering van het huidige document (bijvoorbeeld ANSI). Als je de metatag invult UTF-8, en het document zelf is geschreven in ANSI en converteer vervolgens naar UTF-8(via menu " Coderingen" en alinea " Converteren naar UTF-8 zonder stuklijst").

derde reden:

vierde reden

En tot slot, de laatste populaire reden is: database coderingsprobleem. Zorg er eerst voor dat al uw tabellen en velden in dezelfde codering zijn geschreven, die overeenkomt met de codering van de rest van de site. Als dit niet helpt, voer dan onmiddellijk na het verbinden in het script het volgende verzoek uit:

STEL NAMEN IN "utf8"

In plaats van " utf8" kan een andere codering zijn. Daarna moeten alle gegevens uit de database in de juiste codering worden uitgevoerd.

In dit artikel hoop ik dat ik het in ieder geval heb behandeld 90% van de problemen die verband houden met het verschijnen van "abracadabra" op de site. Nu zou u zo'n populair en eenvoudig probleem als onjuiste codering in een handomdraai moeten oplossen.

De afgelopen twee jaar hebben zich enkele opmerkelijke ontwikkelingen voorgedaan in de constructie van foutcorrigerende codes. Er zijn methoden gevonden voor het construeren van efficiënte, zeer lange codes; en, belangrijker nog, deze codes bleken praktisch te zijn. Tegelijkertijd is er een groeiende behoefte aan communicatiekanalen met een zeer hoge betrouwbaarheid, die kunnen worden gebruikt in complexen van computers en verschillende automatische apparatuur. Naarmate de behoefte aan grotere betrouwbaarheid toeneemt, de economie van elektronische logische apparaten toeneemt en de codeertheorie dieper wordt ontwikkeld, nadert de tijd dat foutdetectie- en -correctieapparaten, d.w.z. apparaten van het type dat in dit boek wordt beschreven, een steeds belangrijkere rol zullen spelen rol bij de totstandkoming van complexe informatiesystemen.

Dit hoofdstuk introduceert het concept van een communicatiekanaal, beschrijft de rol van codes bij de overdracht van informatie, definieert blokcodes en introduceert andere belangrijke concepten.

1.1. Koppeling

Een schematisch diagram van een digitaal communicatiesysteem wordt getoond in Fig. 1.1. Hetzelfde model beschrijft ook het informatieopslagsysteem, als de omgeving waarin informatie wordt opgeslagen als een kanaal wordt beschouwd. Een typisch kanaal voor het verzenden van informatie is een telefoonkanaal. Een typisch informatieopslagapparaat is een bandrecorder, inclusief opname- en leeskoppen.

Rijst. 1.1. Blokschema van een algemeen systeem voor het verzenden of opslaan van informatie.

Een typische informatiebron is een bericht dat bestaat uit binaire of decimale cijfers, of tekst die in een of ander alfabet is geschreven. De encoder zet deze berichten om in signalen die kunnen worden verzonden

per kanaal. Typische signalen zijn elektrisch, met enkele beperkingen in termen van vermogen, bandbreedte en duur. Deze signalen komen het kanaal binnen en worden vervormd door ruis. Het beschadigde signaal komt dan de decoder binnen, die het verzonden bericht reconstrueert en naar de ontvanger stuurt. De taak van de communicatie-ingenieur is in de eerste plaats het bouwen van de encoder en decoder, hoewel het ook de taak kan zijn om het kanaal zelf te verbeteren. Merk op dat de encoder een apparaat bevat dat een bewerking uitvoert die gewoonlijk modulatie wordt genoemd, en de decoder een apparaat bevat dat detectie uitvoert.

Het systeem getoond in afb. 1.1 is te algemeen om geschikt te zijn voor theoretische analyse. De algemene coderingstheorie geeft aan dat het communicatiekanaal een bepaalde capaciteit heeft, dat typische bronnen een bepaalde informatiecreatiesnelheid hebben en dat in het geval dat de informatiecreatiesnelheid van de bron lager is dan de kanaalcapaciteit, het mogelijk is om te coderen en decoderen zodat de kans op foutieve decodering willekeurig klein is.

Rijst. 1.2, Blokschema van een typisch informatietransmissie- of opslagsysteem.

Dus, hoewel er hoop is voor de toekomst, geeft de theorie tot dusver niet meer dan vage aanwijzingen over hoe het informatietransmissiesysteem moet worden ontworpen.

Een typisch modern informatietransmissiesysteem wordt getoond in Fig. 1.2. Bijna alle computers zetten binnenkomende informatie om naar binair en verwerken deze vervolgens in binaire vorm. Veel systemen gebruiken code waarin verschillende

combinaties van zes binaire tekens vertegenwoordigen cijfers, letters, spaties en speciale tekens zoals leestekens. Een andere veel voorkomende code gebruikt vier binaire cijfers voor elk decimaal cijfer en twee decimale cijfers voor elk alfabetisch of speciaal teken.

Een apparaat voor het coderen van binaire symbolen in signalen aan de ingang van een kanaal wordt soms een modulator genoemd. In de meeste gevallen associeert het één met een impuls en nul met de afwezigheid van een impuls of een impuls die duidelijk verschilt van de code voor één. Deze afzonderlijke conversie van elk binair symbool is een beperking die beslist een vermindering van de kanaaldoorvoer veroorzaakt. De decoder bepaalt of de volgende ontvangen puls nul of één is. Onafhankelijke decodering van individuele pulsen leidt tot een verdere vermindering van de doorvoer. De theorie laat zien dat meer geavanceerde coderings- en decoderingsmethoden de transmissiesnelheid verhogen voor dezelfde foutkans. Efficiënte methoden voor het implementeren van deze methoden zijn echter nog niet bekend.

Apparaten voor het coderen en decoderen van binaire tekens met behulp van binaire codes die fouten detecteren en corrigeren.