Bucharbajewa N.A. Kodierung von Textinformationen. Grundlage der Grundlagen ist die ASCII-Kodierung und ihre modernen Interpretationen

Ziel der Arbeit: Kennenlernen der Vielfalt der Codes, die eine Person umgeben, der Rolle und Definition des praktischen Anwendungsbereichs der Informationscodierung.

Die Relevanz dieses Themas ergibt sich aus der Notwendigkeit, Fragen der Informationskodierung aufgrund ihrer großen praktischen Bedeutung zu berücksichtigen.

Praktische Bedeutung: Das Material des Artikels kann als zusätzliche Information bei der Betrachtung der Frage der Kodierungsinformationen oder als Lehrmaterial bei der Durchführung einer Seminarstunde verwendet werden.

EINFÜHRUNG.

Ein grundlegendes Merkmal der Zivilisation ist das Wachstum der Produktion, des Konsums und der Anhäufung von Informationen in allen Bereichen der menschlichen Tätigkeit. Das gesamte Leben eines Menschen ist auf die eine oder andere Weise mit dem Empfangen, Sammeln und Verarbeiten von Informationen verbunden. Was auch immer ein Mensch tut: Ob er ein Buch liest, fernsieht, spricht, er empfängt und verarbeitet ständig und kontinuierlich Informationen.

Jeder lebende Organismus, einschließlich des Menschen, ist Träger genetischer Informationen, die vererbt werden. Genetische Informationen werden in allen Zellen des Körpers in DNA-Molekülen (Desoxyribonukleinsäure) gespeichert. Das menschliche DNA-Molekül umfasst etwa drei Milliarden Nukleotidpaare und kodiert alle Informationen über den menschlichen Körper: sein Aussehen, seine Gesundheit oder Veranlagung für Krankheiten, Fähigkeiten usw.

Ein Mensch nimmt die Welt um sich herum wahr, d.h. nimmt Informationen über die Sinne auf. Um sich in der Welt richtig zurechtzufinden, merkt er sich die erhaltenen Informationen, d.h. speichert Informationen, eine Person trifft Entscheidungen, d.h. verarbeitet Informationen und übermittelt und empfängt bei der Kommunikation mit anderen Menschen Informationen. Der Mensch lebt in einer Welt der Information.

Für jede Operation an Informationen (selbst etwas so Einfaches wie das Speichern) muss diese irgendwie dargestellt (aufgezeichnet, aufgezeichnet) werden. Dieser Vorgang hat einen besonderen Namen – Informationskodierung.

DARSTELLUNG UND KODIERUNG VON INFORMATIONEN.

Die Geschichte der Informationskodierung beginnt in der prähistorischen Zeit, als der Urmensch Bilder von ihm bekannten Objekten der umgebenden Welt in Fels ritzte.

Die Verschlüsselung von Informationen ist äußerst vielfältig. Anweisungen an den Fahrer des Autos werden in Form von Verkehrsschildern kodiert. Ein Musikstück wird mithilfe von Notenzeichen kodiert; für die Aufzeichnung von Schachspielen und chemischen Formeln wurden spezielle Aufnahmesysteme entwickelt. Jeder kompetente Computerbenutzer weiß um die Existenz von Zeichenkodierungen. Eine geografische Karte kodiert Informationen über das Gebiet. Die Notwendigkeit, Sprachinformationen zu kodieren, entstand im Zusammenhang mit der rasanten Entwicklung der Kommunikationstechnologie, insbesondere der Mobilkommunikation. Man hat sich spezielle Codes ausgedacht: Blindenschrift, Morsecode, Flaggencode. Es gibt viele solcher Beispiele, die angeführt werden können.

Es ist bekannt, dass wir dieselben Informationen auf unterschiedliche Weise ausdrücken können.

Wie kann man beispielsweise eine Gefahr melden?

  • Wenn Sie angegriffen werden, können Sie einfach „Wache!!“ rufen. (Der Engländer wird „Helfen Sie mir!“ rufen.)
  • Wenn das Gerät unter Hochspannung steht, muss ein Warnschild (Bild) angebracht werden.
  • An einer stark befahrenen Kreuzung hilft ein Verkehrsleiter mit Gesten, einen Unfall zu vermeiden.
  • Im Pantomimetheater werden alle Informationen ausschließlich durch Mimik und Gestik an den Zuschauer übermittelt.
  • Wenn Ihr Schiff sinkt, senden Sie das „SOS“-Signal (... – – –...).
  • Neben dem Morsezeichen verwendet die Marine auch Semaphor- und Flaggensignale.

Eine Menge von Zeichen, deren Reihenfolge festgelegt ist, wird Alphabet genannt.

Es gibt viele Alphabete.

  • Alphabet aus kyrillischen Buchstaben (A, B, V, G, D, E, ...)
  • Alphabet aus lateinischen Buchstaben (A, B, C, D, E, F, ...)
  • Dezimalstellenalphabet (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  • Alphabet der Tierkreiszeichen (^, ​​_, `, a, b, c, d, e, f, g, h, i) usw.

Es gibt jedoch Zeichensätze, für die es keine allgemein anerkannte Reihenfolge gibt:

  • Eine Reihe von Braille-Zeichen (für Blinde);
  • Eine Reihe chinesischer Ideogramme;
  • Satz Planetenzeichen;
  • Satz genetischer Codezeichen (A, C, G, T).

Besonders wichtig haben Mengen, die nur aus zwei Zeichen bestehen:

  • Ein Zeichenpaar (+, –);
  • Zeichenpaar „Punkt“, „Strich“ (., –)
  • Ein Zahlenpaar (0, 1).
  • Ein paar Antworten (ja, nein).

Somit ist die Informationskodierung der Prozess der Bildung einer spezifischen Darstellung von Informationen. Die Bedeutung der Codierung hat in den letzten Jahrzehnten durch die Einführung von Computern zugenommen.

Mit dem Aufkommen von Computern entstand die Notwendigkeit, alle Arten von Informationen zu verschlüsseln, mit denen sowohl der Einzelne als auch die Menschheit als Ganzes umgehen. Schreiben und Rechnen sind nichts anderes als ein System zur Kodierung von Sprache und numerischen Informationen. Informationen erscheinen nie in ihrer reinen Form, sie werden immer irgendwie präsentiert, irgendwie verschlüsselt.

Die wichtigsten Codierungsattribute sind:

  • Ein Code ist eine Reihe von Zeichen, die nach bestimmten Regeln einer bestimmten Sprache angeordnet sind, um Informationen zu übermitteln.
  • Ein Zeichen ist ein Zeichen, ein Objekt, das etwas bezeichnet (Buchstabe, Zahl, Loch). Ein Zeichen wird zusammen mit seiner Bedeutung als Symbol bezeichnet. Es gibt viele Klassifizierungen von Zeichen (Anhang 1).
  • Sprache ist ein komplexes System von Symbolen, von denen jedes eine spezifische Bedeutung hat. Sprachsymbole, die innerhalb einer bestimmten Gemeinschaft allgemein akzeptiert und dementsprechend allgemein verständlich sind, werden im Sprachprozess miteinander kombiniert und erzeugen so inhaltlich unterschiedliche Botschaften.

Code, Zeichen und Sprache ermöglichen es Ihnen, Informationen in einer symbolischen Form zu übertragen, die für die Kodierung geeignet ist

Ein Computer kann nur Informationen verarbeiten, die in numerischer Form vorliegen. Alle anderen Informationen (z. B. Töne, Bilder, Instrumentenwerte usw.) müssen zur Verarbeitung auf einem Computer in numerische Form umgewandelt werden.

PRAKTISCHE ANWENDUNG DER INFORMATIONSKODIERUNG.

Beim Kurzschreiben handelt es sich um schnelles Schreiben mit Sonderzeichen, die so kurz sind, dass sie zum Aufzeichnen von Live-Gesprächen verwendet werden können. Die Kurzschrift ist seit der Antike zu uns gekommen. Schon im alten Ägypten zeichneten Schreiber die Reden der Pharaonen auf. Die Kurzschrift verbreitete sich im antiken Griechenland. Im Jahr 1883 wurde auf der Akropolis eine Marmorplatte gefunden, auf der Stenogramme eingemeißelt waren. Nach Angaben von Wissenschaftlern wurden diese Aufzeichnungen im Jahr 350 v. Chr. angefertigt. Der allgemein anerkannte Geburtstag der Stenographie ist jedoch der 5. Dezember 63 v. Chr. Dann entstand im antiken Rom die Notwendigkeit, mündliche Rede wörtlich aufzuzeichnen. Als Autor der antiken römischen Kurzschrift gilt Tiron, der Sekretär des berühmten Redners Cicero.

IN moderne Welt Trotz der Fülle an Mitteln zur mechanischen Aufzeichnung von Wörtern (Tonbandgerät, Diktiergerät) wird der Besitz von Stenographiekenntnissen immer noch geschätzt. Wir schreiben im Durchschnitt fünfmal langsamer als wir sprechen. Die Kurzschrift schließt diese Lücke. Es ist besonders nützlich, um Notizen zu Vorträgen, öffentlichen Reden, Gesprächen, zum Verfassen von Berichten, zum Vorbereiten von Artikeln usw. zu machen.

Es gibt viele Fälle, in denen die Stenographie für Menschen unterschiedlicher Berufe eine unschätzbare Hilfe war. (Anlage 2).

Telefonnummernplan.

In Russland wird eine geschlossene zehnstellige Nummerierung verwendet. Dies bedeutet, dass alle vollständig sind Telefonnummer mit Vorwahl oder Mobilfunknetz muss 10-stellig sein. Dies wird als nationale Telefonnummer bezeichnet. Wenn Sie ein Telefon mit einer anderen Regionalvorwahl als Ihrer „Heimat“-Vorwahl anrufen, müssen Sie zusätzlich die Ferngesprächsvorwahl („8“) wählen.

Persönliche Angaben.

In letzter Zeit ist das Thema personenbezogener Daten sehr relevant geworden. Die persönlichen Daten einer Person werden in ihrem Reisepass erfasst.

Unter dem Foto im Reisepass sind im Licht magnetische Etiketten mit aufgezeichneten Informationen sichtbar, die nur elektronisch gelesen werden können und für den Inhaber des Dokuments unzugänglich sind. Durch die Unterzeichnung dieser (aus technischen Gründen noch nicht ausgefüllten) Spalte im Reisepass erklärt sich die Person damit einverstanden, dass ihr anstelle eines Namens ein Code zugewiesen wird, d. h. Der Name wird durch eine Nummer ersetzt.

Barcodes.

Mit der Entwicklung der Informationstechnologie und der flächendeckenden Einführung der Computertechnologie in viele Tätigkeitsbereiche wird die Frage der schnellen und zuverlässigen Informationseingabe immer dringlicher. Die manuelle Eingabe eines Produktcodes erfordert viel Handarbeit, Zeit und führt oft zu Fehlern.

Derzeit wird in Russland und im Ausland viel daran gearbeitet, automatisierte Datenverarbeitungssysteme mit maschinenlesbaren Dokumenten (MRD) zu schaffen, zu denen auch Dokumente mit Barcodes gehören. Zu den maschinenlesbaren Dokumenten gehören Versanddokumente, Etiketten und Verpackungen von Waren, Scheckbücher und Plastikkarten zur Bezahlung von Dienstleistungen sowie magnetische Datenträger. In diesem Zusammenhang tauchten die Begriffe „elektronischer Kontoauszug“, „elektronisches Geld“ usw. auf.

Die vielversprechendste und sich am schnellsten entwickelnde Richtung bei der Automatisierung der Informationseingabe in einen Computer ist die Verwendung von Barcodes.

Der Barcode ist ein Wechsel aus dunklen und hellen Streifen unterschiedlicher Breite. Auf der Folie wird der Aufbau eines Barcodes dargestellt.

Experten zufolge sind Barcode-Systeme vielversprechend und bieten die Möglichkeit, eines der schwierigsten Computerprobleme zu lösen – die Dateneingabe.

Derzeit werden Barcodes nicht nur in der Produktion und im Warenhandel, sondern auch in vielen Industriezweigen häufig verwendet.

Ein Produktbarcode wird einem Produkt (Produkt) in der Phase der Produktionseinführung zugewiesen. Barcodes finden in nahezu allen Bereichen menschlicher Tätigkeit breite praktische Anwendung (Anhang 3) :

  • Barcodes helfen bei der Zubereitung von Medikamenten;
  • Hervorragende Sortierung;
  • Barcodes bringen Ordnung ins Lager;
  • Du kannst ein Barcode werden!
  • Barcodes schützen Kinder;
  • Allgemeine Überwachung des Privatlebens;
  • Barcodes kontrollieren den Garantieservice;
  • Barcodes am Flughafen vermeiden Verwirrung;
  • Barcodes und verderbliche Waren;
  • Sicherheitskarten;
  • Barcodes verfolgen Gefangene;
  • Zeitungen in der Zukunft;
  • Mithilfe von Barcodes können Sie einen guten Preis finden.
  • Barcodes als Kunst;
  • Barcodes lassen „Hasen“ nicht durch;
  • Barcodes fangen Schulschwänzer auf;
  • Verschreibungsprozess;
  • Barcode und Medizin;
  • Barcodes und Formel-1-Rennen;
  • Handy anstelle einer Konzertkarte;
  • Der Barcode schützt Kinder;
  • Verschlüsselung von Krankheitsdiagnosen auf Krankenscheinen?

Emoticons.

Emoticons (von Lächeln – Lächeln) im Internet sind Symbole, die aus Satzzeichen, Buchstaben und Zahlen bestehen und eine Emotion darstellen.

Smiley ist Der beste Weg Vermitteln Sie Ihre Gefühle und Emotionen bei der virtuellen Kommunikation! Kleine, lustige Gesichter, die in den Text eingefügt werden, machen es überflüssig, über die eigenen Erlebnisse zu schreiben. Es wird angenommen, dass ein Emoticon für das Internet das ist, was ein Rad für die Menschheit ist. Es ist in keiner Form der virtuellen Kommunikation darauf zu verzichten. Es ist äußerst einfach zu bedienen, informativ und lässt trotz seiner Einfachheit großen Spielraum für die Fantasie. Es ist nicht verwunderlich, dass es in der SMS-Kommunikation, in der Werbung, im Design, in der Post und beim Austausch von Notizen im Unterricht übernommen wurde.

Emoticons haben sich so fest in unserem Leben etabliert, dass sie aus dem virtuellen Raum in die Wissenschaft übergegangen sind. In der Psychologie werden Emoticons daher verwendet, um Temperamente anzuzeigen oder die Stimmung einer Person zu verfolgen.

ABSCHLUSS.

Wir wissen, wie groß die Leistungsfähigkeit von Computern und wie vielfältig ihre Einsatzmöglichkeiten heute sind, und können nur erahnen, welche Probleme sie in naher Zukunft lösen können. Daher ist die Frage des Wissens und Verständnisses darüber, wie Informationen in einem Computer dargestellt werden, besonders akut. Es ist notwendig, dass Menschen (nicht nur professionelle Programmierer, sondern auch normale Benutzer) ein Verständnis für die Informationscodierung haben und mögliche Wege Kodierung verschiedener Arten von Informationen.

Viele Codes haben sich sehr fest in unserem Leben verankert. Wenn Sie sich für das Problem der Informationskodierung interessieren, können Sie eine Reihe von Belletristikwerken lesen, die sich mit den Fragen der Kodierung und Dekodierung von Informationen befassen.

  • Arthur Conan Doyle „The Dancing Men“;
  • Edgar Poe „Der Goldkäfer“;
  • Jules Verne „Reise zum Mittelpunkt der Erde“;
  • Valentin Kaverin „Wunscherfüllung“;
  • Dan Brown „Der Da Vinci Code“;
  • David Kahn „Codebreakers“.

Zur Verdeutlichung der Präsentation des Materials finden Sie Präsentationsfolien von

  1. Nehmen wir als Beispiel unsere Website: www.yourmaster.ru
  2. Alle Site-Texte werden verschlüsselt geschrieben und auf der Site veröffentlicht „Windows-1251“ und der Browser wird darüber nicht informiert
  3. Der Hosting-Server sendet standardmäßig automatisch den folgenden Header:
    Inhaltstyp: text/html; Zeichensatz=utf-8

Wenn eine solche Diskrepanz zwischen der tatsächlichen Kodierung der Website und den Kodierungsinformationen im vom Server gesendeten Header besteht, treten Probleme bei der Anzeige der Seiten der Website im Browser der Besucher auf.

Die richtige Kodierung ist sehr wichtig!

Versuchen wir zu erklären, warum.

Mit den oben beschriebenen Einstellungen ist es dem Browser des Nutzers nicht möglich, automatisch zu erkennen, in welcher Kodierung die Texte auf der aufgerufenen Seite verfasst sind. Und höchstwahrscheinlich werden die Seiten in unleserlichem Durcheinander angezeigt. Wenn Sie auf eine solche „Fehlkommunikation“ zwischen dem Browser und Ihrer Website stoßen, müssen Sie dringend entsprechende Maßnahmen ergreifen. Andernfalls wird dies höchstwahrscheinlich zu einer Reihe schwerwiegender Probleme führen.

Erstens Unter solchen Bedingungen und Site-Einstellungen müssen Besucher ständig manuell (mithilfe der Auswahlmethode) die Codierung für den Browser angeben, um die Site anzuzeigen. Dies erfordert ein paar zusätzliche Mausklicks. Aber Sie müssen zugeben, dass nicht jeder gerne zwei bis drei zusätzliche Mausklicks macht, nur um die Informationen auf der Seite in lesbarer Form anzuzeigen. Darüber hinaus wissen viele Menschen nicht nur, wie man die Anzeigekodierung in den Browsereinstellungen ändert, sondern auch, was eine Kodierung im Allgemeinen ist! Die meisten Besucher kommen möglicherweise zu dem Schluss, dass die Website vom Eigentümer verlassen oder von jemandem gehackt wurde, und werden versuchen, sie nicht noch einmal aufzurufen.

Zweitens, wenn es eine mehrdeutige Definition der Site-Seitenkodierung gibt, Suchmaschinen indizieren den Textinhalt der Website möglicherweise nicht korrekt. Was wiederum zu ernsthaften Problemen mit dem Benutzerverkehr von Suchmaschinen führt. Natürlich versuchen einige Suchmaschinen möglicherweise, aus den Inhalten von Seiten irgendwie die richtige Kodierung zu ermitteln, aber das macht es nicht viel einfacher. In der Regel bleibt das Problem weiterhin bestehen.

Ich hoffe, Sie haben erkannt, dass Probleme mit der Codierung ein sehr ernstes Hindernis für das Funktionieren der Website, ihre Entwicklung und die Anziehung regelmäßiger Besucher sein können.

Damit solche Probleme bei der Kodierung nicht auftreten, müssen Sie sowohl auf dem Hosting-Server als auch auf den Seiten der Site die entsprechenden Einstellungen vornehmen.

Die Site-Einstellungen müssen so sein, dass jeder Browser oder Roboter Suchmaschine konnte zweifelsfrei feststellen, in welcher Kodierung die Informationen von der Seite übertragen werden!

Lösung eines Site-Kodierungsproblems

Wir haben bereits festgestellt, dass alle Texte auf unserer Seite in der Kodierung „Windows-1251“ geschrieben und an den Browser des Seitenbesuchers übermittelt werden. Was können wir tun, damit der Server, auf dem unsere Seite gehostet wird, im Header an den Browser übermittelt richtige Informationüber Kodierung? Gehen wir der Reihe nach vor...

1. Um nicht von Servereinstellungen abhängig zu sein, auf allen Seiten der Site, direkt im HTML-Code, müssen Sie die folgende Direktive explizit mit einem Meta-Tag schreiben:

Es muss auf allen Seiten platziert werden, vorzugsweise direkt nach dem Eröffnungs-Tag . Dadurch kann der Browser beim Laden und Interpretieren der Seite automatisch die richtige Anzeigekodierung gemäß der empfangenen Anweisung auswählen! Diese Richtlinie allein sollte ausreichen, um unser Problem zu lösen. Aber so war es theoretisch gedacht. In der Praxis reicht diese Richtlinie jedoch nicht immer aus. In seltenen Fällen kommt es jedoch vor, dass der Browser als Kodierung für die Anzeige der Seite nicht die in der Direktive auf der Seite selbst angegebene Kodierung wählt, sondern die im Header vom Server übermittelte! Und wenn die an zwei Stellen angegebenen Kodierungsinformationen nicht übereinstimmen, bleibt das Problem möglicherweise bestehen.

2. Damit der Server in seiner Antwort die richtigen Codierungsinformationen angibt, müssen Sie eine Datei im Stammverzeichnis Ihrer Site erstellen .htaccess und schreibe die Direktive hinein:

AddDefaultCharset Windows-1251

Dann sendet der Server standardmäßig weiterhin den Codierungsheader, der Name der Codierung stimmt jedoch mit dem Namen überein, der auf der Site selbst gültig ist. Es wird keine Namensunterschiede mehr geben.

Wenn die Datei .htaccess bereits auf Ihrem Server vorhanden ist, dann fügen Sie die angegebene Direktive beispielsweise einfach ganz am Anfang hinzu. Und auf keinen Fall sollten Sie darin bereits vorhandene Informationen unnötigerweise löschen!

Das ist die Lösung des Problems. Stimmen Sie zu, das ist alles nicht so schwierig?! Aber es ist sehr nützlich, um allen möglichen Problemen mit der berüchtigten Kodierung vorzubeugen.

Wenn Sie die beiden oben aufgeführten Empfehlungen nacheinander befolgen, können Browser definitiv keine Fehler bei der automatischen Auswahl der richtigen Kodierung für die Anzeige von Informationen auf Ihrer Website machen. Schließlich haben wir die Codierungsinformationen eindeutig, korrekt und sogar in zwei verschiedenen Anweisungen angegeben!

Besondere Situationen

Situation eins

Website-Ersteller und oft auch die Kunden selbst beginnen, willkürlich und gedankenlos bestimmte Änderungen an der Website vorzunehmen, Texte nach Belieben zu platzieren usw. Bis zu dem Punkt, dass sie dadurch auf der Website landen können Abschnitte mit Informationen in unterschiedlichen Kodierungen. Wir können nicht sagen, was es ist der richtige Ansatz, aber wir werden uns abwenden, denn das passiert und das ist alles. In diesem Fall kann es, selbst wenn wir die beiden oben aufgeführten Empfehlungen befolgen, dennoch vorkommen, dass der Server Informationen über eine Codierung bereitstellt, und zwar im Code HTML-Seiten eine andere Kodierung wird explizit angegeben. In einem solchen Fall vielleicht am meisten einfache Lösung wird das Folgende sein.

In Datei schreiben .htaccess Direktive:

AddDefaultCharset Aus

Bei Verwendung dieser Anweisung sendet der Server einfach überhaupt keinen Header mit Informationen über die Kodierung der übertragenen Seite. Dann beginnen Browser mit den Kodierungsdaten, die explizit im HTML-Code auf den Seiten der Website selbst angegeben sind. Darüber hinaus können die Daten auf einer Seite kodiert sein Windows-1251, und auf einer anderen Seite, zum Beispiel in utf-8. Die Hauptsache ist, nicht zu vergessen, auf diesen Seiten die entsprechenden Meta-Tags mit Informationen über die richtige Kodierung für die Erkennung und Anzeige von Text durch den Browser anzugeben.

Obwohl eine solche Lösung die einfachste ist, ist sie vielleicht nicht die optimalste und richtigste. Im positiven Sinne müssen Sie alle Informationen auf der Website und in allen Abschnitten der Website in derselben Kodierung platzieren! Und wenn es mehrere Seiten in einer anderen Kodierung gibt, ist es besser, die darin enthaltenen Informationen zu aktualisieren, indem alle Texte in die erforderliche Kodierung konvertiert werden.

Situation zwei

Wie Sie wissen, wählen die meisten Websites beim Generieren von Seiten einen Teil der Daten aus einer Datenbank aus, beispielsweise MySQL (sofern die Website in geschrieben ist). PHP-Sprache). Oft, beiVerschieben einer Website von einem Hosting auf ein anderes, können Probleme aufgrund von Kodierungskonflikten zwischen den in der MySQL-Datenbank gespeicherten Daten und den beispielsweise direkt in den Site-Vorlagen gespeicherten Daten auftreten. Daher kann es vorkommen, dass beim Erstellen einer Seite Daten in unterschiedlichen Kodierungen enthalten sein können. Das ist vielleicht eines der unhöflichsten mögliche Fehler mit der Codierung auf der Website und es muss sofort behoben werden. Andernfalls kann es später beim Ausfüllen und Bearbeiten der Seite zu zusätzlichen Schwierigkeiten kommen.

Die Lösung solcher Meinungsverschiedenheiten mit in der Datenbank gespeicherten Daten wird erreicht, indem die Codierungseinstellungen beim Herstellen einer Verbindung zur Datenbank und vor dem Abrufen von Daten aus dieser explizit korrekt festgelegt werden. Wenn beispielsweise die Daten auf unserer Website in der Windows-1251-Kodierung gespeichert sind, müssen wir Daten aus der Datenbank in derselben Kodierung lesen. Stellen Sie dazu nach dem Herstellen einer Verbindung zur Datenbank mit her PHP-Funktionen mysql_connect() (oder mysql_pconnect()) führt Folgendes aus SQL-Abfrage:

mysql_query("SET NAMES cp1251");

Diese Anfrage, teilt dem MySQL-Datenbankserver mit, dass alle Daten in der cp1251-Kodierung gespeichert werden und übertragen werden müssen (dies ist der in MySQL verwendete Kodierungsname anstelle des zuvor erwähnten Namens „windows-1251“, der bei der Übertragung von HTML-Daten verwendet wird).

Es ist jedoch am besten, die Datenkodierung in der MySql-Datenbank auf die zu ändern, die auf der Site selbst verwendet wird. Dann muss der Datenbankserver keinen unnötigen Vorgang ausführen, um Daten von einem Format in ein anderes zu konvertieren.

In einer Anmerkung

Wenn Sie eine Website besucht haben, deren Kodierung aus irgendeinem Grund fehlerhaft ist, Sie aber wirklich nützliche Informationen darüber benötigen (ohne darauf zu warten, dass die Website-Entwickler die oben aufgeführten Empfehlungen befolgen), sollten Sie die richtige Seitenkodierung manuell festlegen in Ihren Browsereinstellungen. Dies kann normalerweise über das Hauptmenü des Browsers erfolgen: Sicht -> Codierung-> Als nächstes wählen Sie aus der Liste den Namen der gewünschten Seitenkodierung aus. Vielleicht müssen Sie diesen Vorgang mehr als einmal durchführen und den einen oder anderen Namen aus der Liste der Kodierungen auswählen. Um den Auswahlprozess zu beschleunigen, empfehlen wir, diese in der folgenden Reihenfolge durchzugehen: Kyrillisch (Windows-1251), Kyrillisch (UTF-8), Kyrillisch (KOI)8-R). Dies sind die am häufigsten verwendeten Kodierungen auf Websites im RuNet.

Wenn die Kodierung falsch ist, wird die gesamte Website oder ein Teil davon als „kryapozyablov“ angezeigt, d. h. Seltsame Zeichen machen den Text unleserlich. Diese Situation kann auftreten, wenn die Webserver-Kodierung falsch konfiguriert ist oder keine Einstellungen vorhanden sind. Lassen Sie uns überlegen Möglichkeiten und Möglichkeiten zur Behebung von Problemen

Falsche HTML-Seitencodierung

Erstellen wir eine Testdatei:

Sudo gedit /var/www/html/encoding.html

Kopieren wir hinein:

Codierungsprüfung



Öffnen wir diese Datei im Browser

Wie Sie sehen, wird die Kodierung vom Browser falsch erkannt:

Es gibt mehrere Möglichkeiten, diese Situation zu korrigieren. Beginnen wir mit der einfachsten Sache: Geben Sie explizit die Codierung für die Webseite an. Dies geschieht durch einen Meta-Tag, der sich innerhalb des Tags befinden muss Kopf:

Fügen wir diese Zeile zu unserer Testdatei hinzu, sodass sie so aussieht:

Codierungsprüfung

Testdatei zur Überprüfung der Kodierung



Wie wir im folgenden Screenshot sehen können, ist das Problem behoben:

Wenn die Kodierung Ihrer Datei anders ist als UTF-8, dann ersetzen Sie es durch Windows-1251 oder eine, die der Codierung der Webseite entspricht. Um zu erfahren, wie Sie die Dateikodierung erkennen, werfen Sie einen Blick darauf.

Dies war der einfachste Weg, das Kodierungsproblem zu beheben – ohne die Servereinstellungen zu ändern.

Lassen Sie uns unsere Testdatei in ihren ursprünglichen Zustand zurückversetzen und weiterhin Möglichkeiten zur Angabe der Kodierung untersuchen.

Wenn Dateien .htaccess inbegriffen Apache-Einstellungen, dann können diese Dateien verwendet werden, um die Kodierung der vom Webserver gesendeten Seiten festzulegen. Um die Dateiunterstützung zu aktivieren .htaccess in der Konfiguration Apache-Datei (/etc/apache2/apache2.conf) finden Sie eine Gruppe von Linien

Optionen Indizes FollowSymLinks AllowOverride Keine Erfordern alle gewährt

Und ersetzen Sie es

AllowOverride Keine

AllowOverride All

Danach muss der Server neu gestartet werden.

Sudo systemctl startet apache2.service neu

Datei .htaccess muss im selben Verzeichnis wie die Site abgelegt werden. Meine Website wird im Stammverzeichnis des Webservers gehostet. Wenn Sie das gleiche haben, dann jetzt im Ordner /var/www/html/ eine Datei erstellen .htaccess und fügen Sie die Direktive hinzu AddDefaultCharset Geben Sie anschließend die gewünschte Kodierung an. Beispiele

AddDefaultCharset UTF-8

AddDefaultCharset Windows-1251

Sie können eine Kodierung angeben, die nur auf Dateien eines bestimmten Formats angewendet wird:

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

Der Dateisatz kann beliebig sein, zum Beispiel:

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

Die nächste Option ist eine Alternative und ermöglicht es Ihnen auch, die Kodierung für Dateien eines bestimmten Typs festzulegen; sie erfordert, dass sie aktiviert ist mod_headers:

Header-Set Content-Type „text/html; charset=utf-8“

Eine weitere Option, die auch in der Datei verwendet werden kann .htaccess So legen Sie die UTF-8-Kodierung fest:

IndexOptions +Charset=UTF-8

Wenn die Site in PHP ist, müssen Sie möglicherweise zusätzlich die Codierung duplizieren php_value default_charset:

AddDefaultCharset Windows-1251 php_value default_charset „cp1251“

Anstatt eine .htaccess-Datei zu erstellen, können Sie die Kodierung in der Webserver-Konfigurationsdatei festlegen. Für Apache CentOS/Fedora ist dies die Datei httpd.conf und für Debian/Ubuntu die Datei apache2.conf. Fügen Sie die folgende Zeile hinzu, um die Kodierung festzulegen und den Webserver neu zu starten, damit die Änderungen wirksam werden:

AddDefaultCharset UTF-8

So legen Sie die UTF-8-Kodierung in PHP fest

IN PHP-Skript Es wird verwendet, um die Kodierung festzulegen Header, Zum Beispiel:

Header("Content-Type: charset=utf-8");

Normalerweise wird neben der Kodierung auch der Inhaltstyp angegeben (im Beispiel die Option für eine HTML-Seite):

Header("Content-Type: text/html; charset=utf-8");

Eine weitere Option für RSS-Feed:

Header("Inhaltstyp: text/xml; charset=utf-8");

Denken Sie daran, dass die Funktion Header muss vor jeder Ausgabe an den Browser aufgerufen werden. Andernfalls (wenn die Ausgabe an den Browser bereits erfolgt ist) wurden die Header bereits gesendet. In diesem Fall ist es natürlich nicht mehr möglich, sie zu ändern. Wenn eine Fehlermeldung an den Browser ausgegeben wurde, wurden die Header bereits gesendet und die Verwendung von Header führt zu einem Fehler. Um zu überprüfen, ob Header bereits gesendet wurden, verwenden Sie headers_sent.

Die beschriebene Methode funktioniert nur, wenn das PHP-Skript den Inhalt der Seite vollständig generiert. Sie sollten statische Seiten (z. B. HTML) in der UTF-8-Kodierung speichern. Die meisten Webserver beachten die Codierung der Datei und fügen einen entsprechenden Header hinzu. Tatsächlich führt das Speichern einer PHP-Datei in der UTF-8-Kodierung zum gleichen Ergebnis.

Falsche Codierung der Ergebnisse aus der MySQL-Datenbank

Wenn Ihre Site aus einem statischen Teil (Vorlage) und einem dynamischen Teil besteht, der aus von der Datenbank empfangenen Daten gebildet wird, kann es vorkommen, dass ein Teil der Site die richtige Codierung hat und ein anderer Teil der Site die falsche eins. In diesem Fall ist es sinnlos, die Einstellungen des Webservers zu ändern, da ein Teil der Seite trotzdem die falsche Codierung aufweist.

Sie müssen zunächst die Kodierung Ihrer Tabellen bestimmen. Kann man anschauen phpMyAdmin:

Achten Sie auf die Spalte „ Vergleich", Eintrag " utf8_unicode_ci" bedeutet, dass die Kodierung verwendet wird UTF-8.

Sie können eine Verbindung zum MySQL-DBMS herstellen und die Kodierung von Tabellen ohne phpMyAdmin überprüfen. Dafür:

MySQL -u root -p

Wenn Sie den Datenbanknamen vergessen haben, führen Sie den folgenden Befehl aus:

DATENBANKEN ANZEIGEN;

Nehmen wir an, ich möchte die Codierung für Tabellen in der Datenbank information_schema nachschlagen

USE information_schema;

Wenn Sie die Namen der Tabellen vergessen haben, führen Sie Folgendes aus:

VOLLSTÄNDIGE SPALTEN AUS Tabellenname ANZEIGEN;

Zum Beispiel:

VOLLSTÄNDIGE SPALTEN AUS GLOBAL_STATUS ANZEIGEN;

Sie werden etwa Folgendes sehen:

Siehe Spalte Kollation. In meinem Fall dort utf8_general_ci, es ist wie utf8_unicode_ci, Kodierung UTF-8. Übrigens, wenn Sie nicht wissen, was der Unterschied zwischen den Kodierungen ist utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, und auch welche Codierung Sie für die MySQL-Datenbank wählen sollen, dann schauen Sie nach.

Nachdem wir nun die Codierung kennen (in meinem Fall ist es UTF-8), müssen Sie jedes Mal, wenn Sie eine Verbindung zum MySQL-DBMS herstellen, Abfragen nacheinander ausführen:

SET NAMES UTF8 SET CHARACTER SET UTF8 SET Character_set_client = UTF8 SET Character_set_connection = UTF8 SET Character_set_results = UTF8

In PHP kann dies etwa so erfolgen:

$this->mysqli = new mysqli($server, $username, $password, $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");

beachten Sie, dass UTF8 Sie müssen es durch die Codierung ersetzen, die für Ihre Tabellen verwendet wird.

Dateikodierung ändern

Wenn Sie sich für den umgekehrten Weg entscheiden und anstatt eine neue Kodierung zu installieren, die Kodierung Ihrer Dateien ändern, dann schauen Sie sich den Artikel „“ an. Hier erfahren Sie, wie Sie die aktuelle Kodierung von Dateien ermitteln und Dateien in eine beliebige Kodierung (nicht nur UTF-8) konvertieren.

So finden Sie heraus, welche Codierung der Server sendet

Wenn Sie herausfinden möchten, welche Kodierungseinstellungen der Webserver hat (welche Kodierung er in Headern sendet), dann verwenden Sie den folgenden Befehl:

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

Stattdessen darin URL Geben Sie die tatsächliche Adresse der Website ein, die Sie überprüfen. Wenn die Site HTTPS verwendet, geben Sie beispielsweise die Site-Adresse zusammen mit dem Protokoll an

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

Welche Kodierung für eine Website gewählt werden soll

Hallo, liebe Leser der Blogseite. Heute sprechen wir mit Ihnen darüber, woher Krakozyabrs auf einer Website und in Programmen kommen, welche Textkodierungen existieren und welche verwendet werden sollten. Werfen wir einen genaueren Blick auf die Geschichte ihrer Entwicklung, beginnend mit dem Basis-ASCII sowie seinen erweiterten Versionen CP866, KOI8-R, Windows 1251 und endend mit den modernen Unicode-Konsortium-Kodierungen UTF 16 und 8.

Für einige mögen diese Informationen unnötig erscheinen, aber wissen Sie, wie viele Fragen ich speziell zu den kriechenden Krakozyabrs (unleserlicher Zeichensatz) erhalte? Jetzt habe ich die Gelegenheit, alle auf den Text dieses Artikels zu verweisen und meine eigenen Fehler zu finden. Machen Sie sich bereit, die Informationen aufzunehmen und versuchen Sie, dem Fluss der Geschichte zu folgen.

ASCII – grundlegende Textkodierung für das lateinische Alphabet

Die Entwicklung der Textkodierungen erfolgte zeitgleich mit der Entstehung der IT-Branche und erlebte in dieser Zeit viele Veränderungen. Historisch gesehen begann alles mit EBCDIC, das in der russischen Aussprache eher dissonant war und es ermöglichte, Buchstaben des lateinischen Alphabets, arabische Ziffern und Satzzeichen mit Steuerzeichen zu kodieren.

Dennoch sollte der Ausgangspunkt für die Entwicklung moderner Textkodierungen als berühmt angesehen werden ASCII(American Standard Code for Information Interchange, der im Russischen normalerweise als „aski“ ausgesprochen wird). Es beschreibt die ersten 128 Zeichen, die von englischsprachigen Benutzern am häufigsten verwendet werden – lateinische Buchstaben, arabische Ziffern und Satzzeichen.

Zu diesen 128 in ASCII beschriebenen Zeichen gehörten auch einige Dienstzeichen wie Klammern, Rautenzeichen, Sternchen usw. Tatsächlich können Sie sie selbst sehen:

Es sind diese 128 Zeichen aus der Originalversion von ASCII, die zum Standard geworden sind, und in jeder anderen Kodierung werden Sie sie auf jeden Fall finden und sie werden in dieser Reihenfolge erscheinen.

Fakt ist aber, dass man mit einem Byte an Informationen nicht 128, sondern bis zu 256 verschiedene Werte kodieren kann (zwei hoch acht ergibt 256), also nach der Basisversion von Asuka eine ganze Reihe erweiterte ASCII-Kodierungen, in dem neben 128 Grundzeichen auch Symbole der Landeskodierung (z. B. Russisch) kodiert werden konnten.

An dieser Stelle lohnt es sich wahrscheinlich, etwas mehr über die Zahlensysteme zu sagen, die in der Beschreibung verwendet werden. Erstens: Wie Sie alle wissen, arbeitet ein Computer nur mit Zahlen im Binärsystem, nämlich Nullen und Einsen („ boolsche Algebra„Wenn jemand ein College oder eine Schule besucht hat). , jeweils eine Zwei hoch, beginnend bei Null und hoch bis zwei hoch sieben:

Es ist nicht schwer zu verstehen, dass alle möglichen Kombinationen von Nullen und Einsen in einer solchen Konstruktion nur 256 sein können. Konvertieren Sie eine Zahl von binäres System in eine Dezimalzahl umzuwandeln ist ganz einfach. Sie müssen nur alle Zweierpotenzen mit den darüber liegenden Einsen addieren.

In unserem Beispiel ergibt sich daraus 1 (2 hoch null) plus 8 (zwei hoch 3), plus 32 (zwei hoch fünf), plus 64 (sechste Potenz) plus 128 (zur siebten Potenz). Die Gesamtsumme beträgt 233 in Dezimalschreibweise. Wie Sie sehen, ist alles sehr einfach.

Wenn Sie sich jedoch die Tabelle mit ASCII-Zeichen genau ansehen, werden Sie feststellen, dass diese in hexadezimaler Kodierung dargestellt werden. Beispielsweise entspricht „Sternchen“ in Aski Hexadezimalzahl 2A. Sie wissen wahrscheinlich, dass im hexadezimalen Zahlensystem neben arabischen Ziffern auch lateinische Buchstaben von A (bedeutet zehn) bis F (bedeutet fünfzehn) verwendet werden.

Na dann, für Übersetzung Binärzahl zu hexadezimal Greifen Sie auf die folgende einfache und offensichtliche Methode zurück. Jedes Informationsbyte ist in zwei Teile zu je vier Bits unterteilt, wie im obigen Screenshot gezeigt. Das. In jedem Halbbyte können nur sechzehn Werte (zwei hoch vier) binär kodiert werden, was sich leicht als Hexadezimalzahl darstellen lässt.

Darüber hinaus müssen in der linken Hälfte des Bytes die Grad erneut von Null beginnend gezählt werden, und nicht wie im Screenshot gezeigt. Als Ergebnis erhalten wir durch einfache Berechnungen, dass die Zahl E9 im Screenshot kodiert ist. Ich hoffe, dass Ihnen meine Überlegungen und die Lösung dieses Rätsels klar waren. Nun, lasst uns nun tatsächlich weiter über Textkodierungen sprechen.

Erweiterte Versionen von Asuka – CP866- und KOI8-R-Kodierungen mit Pseudografiken

Also begannen wir über ASCII zu sprechen, das sozusagen der Ausgangspunkt für die Entwicklung aller modernen Kodierungen (Windows 1251, Unicode, UTF 8) war.

Anfangs enthielt es nur 128 Zeichen des lateinischen Alphabets, arabische Ziffern und etwas anderes, aber in der erweiterten Version wurde es möglich, alle 256 Werte zu verwenden, die in einem Informationsbyte kodiert werden können. Diese. Es wurde möglich, Buchstabensymbole Ihrer Sprache zu Aski hinzuzufügen.

Hier müssen wir noch einmal abschweifen, um es zu erklären – Warum brauchen wir überhaupt Kodierungen? Texte und warum es so wichtig ist. Die Zeichen auf Ihrem Computerbildschirm werden auf der Grundlage von zwei Dingen gebildet – Sätzen von Vektorformen (Darstellungen) verschiedener Zeichen (sie befinden sich in Dateien mit ) und Code, der es Ihnen ermöglicht, aus diesem Satz von Vektorformen (Schriftartdatei) herauszuziehen ) genau das Zeichen, das an der richtigen Stelle eingefügt werden muss.

Es ist klar, dass für die Vektorformen die Schriftarten selbst verantwortlich sind, für die Kodierung jedoch das Betriebssystem und die darin verwendeten Programme. Diese. Jeder Text auf Ihrem Computer besteht aus einer Reihe von Bytes, von denen jedes ein einzelnes Zeichen dieses Textes kodiert.

Das Programm, das diesen Text auf dem Bildschirm anzeigt (Texteditor, Browser usw.), liest beim Parsen des Codes die Kodierung des nächsten Zeichens und sucht nach der entsprechenden Vektorform darin die benötigte Datei Schriftart, die zur Anzeige dieses Textdokuments angeschlossen ist. Alles ist einfach und banal.

Das bedeutet, dass zum Kodieren eines beliebigen Zeichens, das wir benötigen (z. B. aus dem nationalen Alphabet), zwei Bedingungen erfüllt sein müssen: Die Vektorform dieses Zeichens muss in der verwendeten Schriftart vorliegen und dieses Zeichen könnte in erweiterten ASCII-Kodierungen kodiert werden ein Byte. Daher gibt es eine ganze Reihe solcher Möglichkeiten. Für die Kodierung russischer Zeichen gibt es mehrere Varianten des erweiterten Aska.

Zum Beispiel erschien ursprünglich CP866, das Zeichen des russischen Alphabets verwenden konnte und eine erweiterte Version von ASCII war.

Diese. Sein oberer Teil stimmte vollständig mit der Basisversion von Aska (128 lateinische Zeichen, Zahlen und anderer Mist) überein, die im Screenshot oben dargestellt ist, aber der untere Teil der Tabelle mit CP866-Kodierung hatte das im Screenshot unten gezeigte Aussehen und erlaubte Ihnen, weitere 128 Zeichen (russische Buchstaben und alle Arten von Pseudografiken) zu kodieren:

Sie sehen, in der rechten Spalte beginnen die Zahlen mit 8, weil... Zahlen von 0 bis 7 beziehen sich auf den Grundteil von ASCII (siehe erster Screenshot). Das. Der russische Buchstabe „M“ in CP866 hat den Code 9C (er befindet sich am Schnittpunkt der entsprechenden Zeile mit 9 und der Spalte mit der Zahl C im hexadezimalen Zahlensystem), der in einem Informationsbyte geschrieben werden kann, und Wenn eine geeignete Schriftart mit russischen Zeichen vorhanden ist, wird dieser Buchstabe problemlos im Text angezeigt.

Woher kam dieser Betrag? Pseudografiken in CP866? Der springende Punkt ist, dass diese Kodierung für russischen Text in jenen schäbigen Jahren entwickelt wurde, als grafische Betriebssysteme noch nicht so weit verbreitet waren wie heute. Und in Dosa und ähnlichen Textbetriebssystemen ermöglichten Pseudografiken zumindest eine gewisse Diversifizierung der Textgestaltung, und daher gibt es CP866 und alle seine anderen Kollegen aus der Kategorie der erweiterten Versionen von Asuka im Überfluss.

CP866 wurde von IBM vertrieben, aber darüber hinaus wurden eine Reihe von Kodierungen für russische Sprachzeichen entwickelt, die beispielsweise demselben Typ (erweitertes ASCII) zugeordnet werden können KOI8-R:

Das Funktionsprinzip bleibt das gleiche wie beim etwas früher beschriebenen CP866 – jedes Textzeichen wird durch ein einzelnes Byte kodiert. Der Screenshot zeigt die zweite Hälfte der KOI8-R-Tabelle, weil Die erste Hälfte entspricht vollständig dem grundlegenden Asuka, das im ersten Screenshot in diesem Artikel gezeigt wird.

Zu den Merkmalen der KOI8-R-Kodierung gehört, dass in ihrer Tabelle keine russischen Buchstaben enthalten sind alphabetischer Reihenfolge, wie zum Beispiel in CP866.

Wenn Sie sich den allerersten Screenshot (des Basisteils, der in allen erweiterten Kodierungen enthalten ist) ansehen, werden Sie feststellen, dass sich in KOI8-R russische Buchstaben in denselben Zellen der Tabelle befinden wie die entsprechenden Buchstaben des lateinischen Alphabets aus dem ersten Teil der Tabelle. Dies geschah, um den Wechsel von russischen zu lateinischen Zeichen zu erleichtern, indem nur ein Bit (zwei hoch siebte Potenz oder 128) verworfen wurde.

Windows 1251 – die moderne Version von ASCII und warum die Risse auftreten

Die Weiterentwicklung der Textkodierungen war darauf zurückzuführen, dass grafische Betriebssysteme immer beliebter wurden und die Notwendigkeit, darin Pseudografiken zu verwenden, mit der Zeit verschwand. Infolgedessen entstand eine ganze Gruppe, die im Wesentlichen immer noch erweiterte Versionen von Asuka waren (ein Textzeichen wird mit nur einem Byte an Informationen codiert), jedoch ohne die Verwendung pseudografischer Symbole.

Sie gehörten zu den sogenannten ANSI-Kodierungen, die vom American Standards Institute entwickelt wurden. Im allgemeinen Sprachgebrauch wurde die Bezeichnung Kyrillisch auch für die Version mit russischer Sprachunterstützung verwendet. Ein Beispiel hierfür wäre.

Es unterschied sich positiv von den zuvor verwendeten CP866 und KOI8-R darin, dass die darin enthaltenen pseudografischen Symbole durch die fehlenden Symbole der russischen Typografie (mit Ausnahme des Akzentzeichens) sowie durch Symbole ersetzt wurden, die in slawischen Sprachen in der Nähe verwendet werden Russisch (Ukrainisch, Weißrussisch usw.). ):

Aufgrund einer solchen Fülle an russischen Sprachkodierungen gibt es Schriftartenhersteller und -hersteller Software Ständig traten Kopfschmerzen auf, und Sie und ich, liebe Leserinnen und Leser, hatten oft die gleichen berüchtigten Kopfschmerzen krakozyabry als es zu Verwechslungen mit der im Text verwendeten Version kam.

Sehr oft traten sie beim Senden und Empfangen von Nachrichten auf Email, was die Erstellung sehr komplexer Konvertierungstabellen zur Folge hatte, die dieses Problem grundsätzlich nicht lösen konnten, und die von Benutzern häufig für die Korrespondenz verwendet wurde, um die berüchtigten Spielereien bei der Verwendung russischer Kodierungen wie CP866, KOI8-R oder Windows 1251 zu vermeiden.

Tatsächlich waren die anstelle des russischen Textes erscheinenden Krakozyabs das Ergebnis einer falschen Verwendung der Kodierung dieser Sprache, die nicht der Kodierung entsprach, in der sie kodiert war Textnachricht anfänglich.

Nehmen wir an, wenn Sie versuchen, mit CP866 codierte Zeichen mithilfe der Windows 1251-Codetabelle anzuzeigen, wird derselbe Kauderwelsch (ein bedeutungsloser Satz von Zeichen) herauskommen und den Text der Nachricht vollständig ersetzen.

Eine ähnliche Situation entsteht sehr oft in Foren oder Blogs, wenn Texte mit russischen Zeichen fälschlicherweise in der falschen Kodierung gespeichert werden, die standardmäßig auf der Website verwendet wird, oder in der falschen Kodierung Texteditor, wodurch dem Code Gags hinzugefügt werden, die mit bloßem Auge nicht sichtbar sind.

Am Ende waren viele Menschen dieser Situation mit vielen Codierungen und ständig schleichenden Fehlern überdrüssig, die Voraussetzungen für die Schaffung einer neuen universellen Variante waren geschaffen, die alle bestehenden ersetzen und das Problem mit dem Erscheinen endlich lösen würde lesbare Texte. Hinzu kam das Problem von Sprachen wie Chinesisch, wo es deutlich mehr Sprachzeichen als 256 gab.

Unicode – universelle Kodierungen UTF 8, 16 und 32

Diese Tausenden von Zeichen der südostasiatischen Sprachgruppe könnten unmöglich in einem Informationsbyte beschrieben werden, das für die Kodierung von Zeichen in erweiterten Versionen von ASCII vorgesehen war. Daraufhin wurde ein Konsortium mit dem Namen „ Unicode(Unicode – Unicode-Konsortium) in Zusammenarbeit mit vielen führenden IT-Branchen (diejenigen, die Software produzieren, die Hardware kodieren, die Schriftarten erstellen), die an der Entstehung einer universellen Textkodierung interessiert waren.

Die erste unter der Schirmherrschaft des Unicode-Konsortiums veröffentlichte Variante war UTF 32. Die Zahl im Codierungsnamen gibt die Anzahl der Bits an, die zum Codieren eines Zeichens verwendet werden. 32 Bits entsprechen 4 Bytes an Informationen, die benötigt werden, um ein einzelnes Zeichen in der neuen universellen UTF-Kodierung zu kodieren.

Infolgedessen hat dieselbe Datei mit Text, der in der erweiterten Version von ASCII und im letzteren Fall in UTF-32 codiert ist, eine viermal größere Größe (Gewicht). Das ist schlecht, aber jetzt haben wir die Möglichkeit, mit YTF eine Anzahl von Zeichen zu kodieren, die zwei hoch zweiunddreißig Potenzen entspricht ( Milliarden von Zeichen, was jeden wirklich notwendigen Wert mit einer kolossalen Marge abdeckt).

Viele Länder mit Sprachen der europäischen Gruppe mussten jedoch überhaupt nicht so viele Zeichen bei der Kodierung verwenden, erhielten jedoch bei Verwendung von UTF-32 ohne Grund eine vierfache Gewichtszunahme Textdokumente und damit eine Zunahme des Internetverkehrsvolumens und der Menge der gespeicherten Daten. Das ist eine Menge, und niemand könnte sich solchen Abfall leisten.

Als Ergebnis der Entwicklung von Unicode, UTF-16, was sich als so erfolgreich erwies, dass es standardmäßig als Basisraum für alle von uns verwendeten Zeichen übernommen wurde. Es verwendet zwei Bytes, um ein Zeichen zu kodieren. Mal sehen, wie das Ding aussieht.

Im Windows-Betriebssystem können Sie dem Pfad „Start“ – „Programme“ – „Zubehör“ – „Systemprogramme“ – „Zeichentabelle“ folgen. Als Ergebnis öffnet sich eine Tabelle mit den Vektorformen aller auf Ihrem System installierten Schriftarten. Wenn Sie in „ Zusatzoptionen» Satz von Unicode-Zeichen, Sie können für jede Schriftart separat den gesamten darin enthaltenen Zeichenbereich sehen.

Übrigens, wenn Sie auf eines davon klicken, können Sie dessen Zwei-Byte sehen Code im UTF-16-Format, bestehend aus vier hexadezimalen Ziffern:

Wie viele Zeichen können in UTF-16 mit 16 Bit kodiert werden? 65.536 (zwei hoch sechzehn), und dies ist die Zahl, die als Basisraum in Unicode übernommen wurde. Darüber hinaus gibt es Möglichkeiten, etwa zwei Millionen Zeichen damit zu kodieren, diese waren jedoch auf einen erweiterten Textraum von einer Million Zeichen beschränkt.

Aber selbst diese erfolgreiche Version der Unicode-Kodierung brachte denjenigen, die beispielsweise Programme nur in schrieben, keine große Befriedigung Englische Sprache, denn nach dem Übergang von der erweiterten Version von ASCII zu UTF-16 verdoppelte sich das Gewicht der Dokumente (ein Byte pro Zeichen in Aski und zwei Bytes pro dasselbe Zeichen in UTF-16).

Genau um alle und alles im Unicode-Konsortium zufrieden zu stellen, wurde beschlossen, etwas zu entwickeln Codierung mit variabler Länge. Es hieß UTF-8. Trotz der Acht im Namen hat es tatsächlich eine variable Länge, d.h. Jedes Textzeichen kann in eine Sequenz mit einer Länge von ein bis sechs Bytes kodiert werden.

In der Praxis nutzt UTF-8 nur den Bereich von einem bis vier Byte, denn jenseits von vier Byte Code ist theoretisch nichts mehr vorstellbar. Alle darin enthaltenen lateinischen Zeichen sind in einem Byte kodiert, genau wie im guten alten ASCII.

Bemerkenswert ist, dass bei der Codierung nur des lateinischen Alphabets auch Programme, die Unicode nicht verstehen, immer noch lesen, was in YTF-8 codiert ist. Diese. Der Kernteil von Asuka wurde einfach auf diese Gründung des Unicode-Konsortiums übertragen.

Kyrillische Zeichen werden in UTF-8 in zwei Bytes kodiert, und georgische Zeichen werden beispielsweise in drei Bytes kodiert. Das Unicode-Konsortium hat nach der Erstellung von UTF 16 und 8 das Hauptproblem gelöst – jetzt haben wir es Schriftarten haben einen einzigen Coderaum. Und jetzt können ihre Hersteller es nur noch mit Vektorformen von Textzeichen füllen, basierend auf ihren Stärken und Fähigkeiten. Jetzt gibt es sie sogar im Set.

In der „Zeichentabelle“ oben können Sie sehen, dass verschiedene Schriftarten unterschiedliche Anzahlen von Zeichen unterstützen. Einige Unicode-reiche Schriftarten können ziemlich umfangreich sein. Nun unterscheiden sie sich jedoch nicht dadurch, dass sie für unterschiedliche Kodierungen erstellt wurden, sondern darin, dass der Schrifthersteller den einzelnen Coderaum mit bestimmten Vektorformen gefüllt oder nicht vollständig gefüllt hat.

Verrückte Wörter statt russischer Buchstaben – so beheben Sie das Problem

Sehen wir uns nun an, wie Krakozyabrs anstelle von Text angezeigt werden oder mit anderen Worten, wie die richtige Kodierung für russischen Text ausgewählt wird. Tatsächlich wird es in dem Programm festgelegt, in dem Sie genau diesen Text oder Code mithilfe von Textfragmenten erstellen oder bearbeiten.

Zum Bearbeiten und Erstellen Textdateien Persönlich verwende ich meiner Meinung nach ein sehr gutes . Es kann jedoch die Syntax von Hunderten anderer Programmier- und Auszeichnungssprachen hervorheben und ist außerdem mit Plugins erweiterbar. Lesen ausführliche Rezension Dieses wunderbare Programm finden Sie unter dem angegebenen Link.

Im oberen Menü von Notepad++ gibt es einen Punkt „Kodierungen“, wo Sie die Möglichkeit haben, eine vorhandene Option in die auf Ihrer Website standardmäßig verwendete Option umzuwandeln:

Bei einer Website auf Joomla 1.5 und höher sowie bei einem Blog auf WordPress sollten Sie die Option wählen, um das Auftreten von Rissen zu vermeiden UTF 8 ohne Stückliste. Was ist das Stücklistenpräfix?

Tatsache ist, dass sie bei der Entwicklung der YUTF-16-Kodierung aus irgendeinem Grund beschlossen haben, ihr so ​​etwas wie die Möglichkeit hinzuzufügen, den Zeichencode sowohl in direkter Reihenfolge (z. B. 0A15) als auch in umgekehrter Reihenfolge (150A) zu schreiben. . Und damit Programme genau verstehen, in welcher Reihenfolge sie die Codes lesen müssen, wurde es erfunden Stückliste(Byte Order Mark oder mit anderen Worten Signatur), was durch das Hinzufügen von drei zusätzlichen Bytes ganz am Anfang der Dokumente ausgedrückt wurde.

Bei der UTF-8-Kodierung waren im Unicode-Konsortium keine Stücklisten vorgesehen, und daher verhindert das Hinzufügen einer Signatur (diese berüchtigten zusätzlichen drei Bytes am Anfang des Dokuments) lediglich, dass einige Programme den Code lesen können. Daher müssen wir beim Speichern von Dateien in UTF immer die Option ohne Stückliste (ohne Signatur) auswählen. Sie sind also im Voraus Schützen Sie sich vor kriechenden Krakozyabren.

Bemerkenswert ist, dass einige Programme in Windows dies nicht können (sie können keinen Text in UTF-8 ohne Stückliste speichern), zum Beispiel derselbe berüchtigte Windows Notepad. Das Dokument wird in UTF-8 gespeichert, die Signatur (drei zusätzliche Bytes) wird jedoch am Anfang hinzugefügt. Darüber hinaus sind diese Bytes immer gleich – lesen Sie den Code in direkter Reihenfolge. Aber auf Servern kann aufgrund dieser Kleinigkeit ein Problem auftreten – Betrüger kommen heraus.

Daher auf keinen Fall nicht normal verwenden Windows-Notizblock um Dokumente auf Ihrer Website zu bearbeiten, wenn Sie nicht möchten, dass Risse auftreten. Ich halte den bereits erwähnten Notepad++-Editor für die beste und einfachste Option, die praktisch keine Nachteile hat und nur aus Vorteilen besteht.

Wenn Sie in Notepad++ eine Kodierung auswählen, haben Sie die Möglichkeit, Text in die UCS-2-Kodierung zu konvertieren, die dem Unicode-Standard sehr nahe kommt. Auch im Notepad wird es möglich sein, Text in ANSI zu kodieren, d.h. In Bezug auf die russische Sprache wird dies Windows 1251 sein, das wir oben bereits beschrieben haben. Woher kommen diese Informationen?

Es ist in Ihrem Register eingetragen Betriebssystem Windows – welche Kodierung soll im Falle von ANSI gewählt werden, welche soll im Falle von OEM gewählt werden (für die russische Sprache ist es CP866). Wenn Sie eine andere Standardsprache auf Ihrem Computer installieren, werden diese Kodierungen durch ähnliche Kodierungen aus der ANSI- oder OEM-Kategorie für dieselbe Sprache ersetzt.

Nachdem Sie das Dokument in Notepad++ in der benötigten Kodierung gespeichert oder das Dokument auf der Website zum Bearbeiten geöffnet haben, können Sie seinen Namen in der unteren rechten Ecke des Editors sehen:

Um Rednecks zu vermeiden Zusätzlich zu den oben beschriebenen Aktionen ist es sinnvoll, in die Kopfzeile zu schreiben Quellcode Alle Seiten der Site informieren über genau diese Codierung, sodass es keine Verwirrung auf dem Server oder lokalen Host gibt.

Im Allgemeinen in allen Sprachen Hypertext Markup Zusätzlich zu HTML wird eine spezielle XML-Deklaration verwendet, die die Textkodierung angibt.

Vor dem Parsen des Codes weiß der Browser, welche Version verwendet wird und wie genau er die Zeichencodes dieser Sprache interpretieren muss. Bemerkenswert ist jedoch, dass diese XML-Deklaration weggelassen werden kann, wenn Sie das Dokument im Standard-Unicode speichern (die Codierung wird als UTF-8 betrachtet, wenn keine Stückliste vorhanden ist, oder als UTF-16, wenn eine Stückliste vorhanden ist).

Im Fall eines HTML-Sprachdokuments wird die Codierung zur Angabe verwendet Metaelement, das zwischen dem öffnenden und schließenden Head-Tag geschrieben wird:

... ...

Dieser Eintrag unterscheidet sich erheblich von dem in übernommenen Eintrag, stimmt jedoch voll und ganz mit dem neuen überein, der schrittweise eingeführt wird HTML-Standard 5 und wird von allen derzeit verwendeten Browsern zu 100 % korrekt verstanden.

Theoretisch ein Meta-Element, das die Kodierung angibt HTML-Dokument es wäre besser zu sagen möglichst weit oben im Dokumentkopf Damit zum Zeitpunkt der Begegnung mit dem ersten Zeichen im Text, das nicht aus dem grundlegenden ANSI-Zeichensatz stammt (die immer korrekt und in jeder Variation gelesen werden), der Browser bereits über Informationen darüber verfügen sollte, wie die Codes dieser Zeichen zu interpretieren sind.

Viel Erfolg! Bis bald auf den Seiten der Blog-Site

Weitere Videos finden Sie unter
");">

Du könntest interessiert sein

Was sind URL-Adressen, wie unterscheiden sich absolute und relative Links für eine Website?
OpenServer – modern lokaler Server und ein Beispiel für seine Verwendung für WordPress-Installationen am Computer
Was ist Chmod, welche Berechtigungen kann man Dateien und Ordnern zuweisen (777, 755, 666) und wie geht das über PHP?
Yandex-Suche nach Website und Online-Shop

Guten Tag allerseits. Alexey Gulynin ist in Kontakt. Im letzten Artikel haben wir uns angeschaut Erstellen von Tabellen in HTML. In diesem Artikel möchte ich über ein Problem sprechen, auf das Sie in Ihrer Praxis mit Sicherheit stoßen werden (sofern Sie es noch nicht erlebt haben). Und dieses Problem hängt damit zusammen Kodierung auf der Website. Diese Situation kommt oft vor: Sie sitzen da, lassen sich etwas einfallen und am Ende werden Ihre Gedanken in schriftlichem Code ausgedrückt. Sie öffnen Ihre Kreation im Browser und dort ist völliger Unsinn geschrieben, oder wie man diesen Unsinn normalerweise nennt – „krakozyabry“. Eines ist hier offensichtlich Problem mit der Kodierung auf der Website. Höchstwahrscheinlich ist es Ihre Standardkodierung Windows-1251 (Kyrillisch), und der Browser versucht, Ihre Datei in der UTF-8-Kodierung zu öffnen. Kurz darüber, was Kodierung ist. Eine Kodierung ist eine Art Tabelle, die jedem Zeichen einen Maschinencode zuordnet. Dementsprechend haben unsere russischen Buchstaben in einer Kodierung einen Code, in anderen einen anderen Code. Freunde, verwenden Sie überall die UTF-8-Kodierung und Sie werden glücklich sein. Utf-8 wird auch Unicode genannt.

Lassen Sie uns ein Testdokument in Notepad++ erstellen und den folgenden Code schreiben.

Codierungsprobleme

Codierungsprobleme testen



Stellen Sie sicher, dass im Notepad++-Menü oben „Kodierungen“ steht – „In ANSI kodieren“. Jetzt werden wir künstlich ein Problem mit der Kodierung erzeugen. Versuchen Sie jetzt, diese Datei in Ihrem Browser zu öffnen. Wir werden Hieroglyphen sehen. Der Punkt hier ist, dass wir unsere Datei in ANSI-Kodierung (kyrillisch) erstellt haben und dem Browser mitgeteilt wurde, dass unsere Datei in Kodierung vorliegt utf-8 ( ) .

Die Gründe dafür Probleme mit der Codierung auf der Website:

1) Falscher Wert des charset-Attributs des Meta-Tags.

2) Überprüfen Sie im Notepad++-Menü, ob die Dateikodierung utf-8 ist. Dies muss unter „Kodierungen“ – „Kodierung in UTF-8 (ohne BOM)“ erfolgen. Im Internet findet man eine Definition dessen, was „BOM“ ist, diese ist jedoch unklar. Soweit ich weiß, befindet sich am Anfang des Dokuments ein geschütztes Leerzeichen mit der Breite Null. Wir brauchen es nicht, also immer „ohne Stückliste“ angeben.

3) Es kommt vor, dass die ersten beiden Punkte abgeschlossen sind, aber auf den Seiten der Site immer noch Unsinn erscheint. Hier kann das Problem in den Servereinstellungen liegen, d.h. Das Hosting überträgt direkt Header für unsere Dateien und legt die Standardkodierung fest. Versuchen wir, ihn davon abzubringen. Im Stammverzeichnis der Site sollte sich eine .htaccess-Datei befinden. Mithilfe dieser Datei können Sie Anpassungen am Hosting-Vorgang vornehmen. Wenn Sie diese Datei nicht haben, müssen Sie sie erstellen. Es ist bequem, dies in zu tun Notepad-Editor++. IN Diese Datei Sie müssen den folgenden Code schreiben:

AddDefaultCharset UTF-8

Mit dieser Anweisung teilen wir dem Server mit, dass unsere Standardkodierung „utf-8“ ist. Wenn dies nicht hilft, müssen Sie den folgenden Code in dieselbe Datei schreiben:

Charsetdisable bei AddDefaultCharset Off

Hier versuchen wir dem Server mitzuteilen, dass wir keine Standardkodierung wünschen. Wenn nach diesen Machenschaften nichts hilft, müssen Sie den Hoster anschreiben und entscheiden dieses Problem mit ihm. Vielleicht wird er dir etwas sagen.