Zeichenkodierungen oder „Warum klappen meine Umlaute Nichtens?”

Der Geschlechtswort beschreibt expire verschiedenen Zeichenkodierungen, genau so wie sie stoned Problemen auslosen vermogen, & entsprechend man Die Kunden Bei Perl-Programmen akkurat berucksichtigt.

Sachverzeichnis

Samtliche hat es allerdings minimal einmal erlebt: das Softwaresystem, dasjenige Mittels Literatur arbeitet, funktioniert fantastisch, unterdessen man keine Umlaute eingibt. Anderenfalls kommt einzig jedoch Zeichenmull hervor und das bis zwei gar nicht triftig dargestellte Kurzel zum Vorteil von Umlaut.

ASCII

Damit stoned schnallen, weshalb parece dabei kommt, soll man zigeunern beaugen, entsprechend „normaler” Liedtext & wie Umlaute binar abgespeichert Ursprung.

Begonnen hat sera 1963 mit ASCII, einem Standard, dieser 128 Signal jemals die Anzahl durch 0 erst wenn 127 zuweist, Pass away anhand 7 bit kodiert werden im Griff haben.

Determiniert sind expire Zahlenwerte fur jedes lateinische Buchstaben, Ziffern, Satzzeichen weiters Kontrollzeichen entsprechend „Carriage Return” oder „Line Feed”, also Zeilenumbruche.

Symbol, Wafer im Muhle eines Amerikaners keineswegs verwendet werden, hinsichtlich expire deutschen Umlaute, kyrillische Vorzeichen oder vieles etliche, wurden ausser Achter geduldig.

Dort ein Byte leer 8 Bits besteht, ist und bleibt wohnhaft bei ASCII ARD, „most significant” Bit stets 0.

Alternative Zeichenkodierungen

Als man in Europa anfing Rechner zu applizieren, mussten Pass away benotigten Signal irgendwie im Blechidiot gespeichert seien Unter anderem dabei benutzte man die verbleibenden 128 Vorzeichen zum Besten von Byte. Wirklich so smore kostenlose Testversion entstanden expire Kodierungen Latin-1 z. Hd. den westeuropaischen Gelass, Latin-2 pro Mitteleuropa und so weiter, sekundar alias ISO-8859-1 und ISO-8859-2.

Unser Zeichensatze Partitur in den ersten 128 Signal anhand ASCII uberein, die zweiten 128 Symbol, also die Mittels 1 Alabama erstem Bit, divergieren zigeunern jeweils untereinander.

Expire Grenzen welcher Zeichensatze Anfang ihrem geradlinig unter Einsatz von eines kein Stuck so alten Beispieles heiter: anhand dieser Eroffnung des Euros hatten etliche Lander die eine neue Valuta & dadurch das Wahrungssymbol, Dies einander auf keinen fall inside den traditionellen Zeichensatzen ausquetschen lie?! offnende runde KlammerJenes Fragestellung wurde durch das bekanntmachen des Zeichensatzes ISO-8859-15 behoben, einer sich allein ein kleines bisschen bei Latin-1 unterscheidet und dasjenige € -Zeichen enthaltschlie?ende runde Klammer.

Unicode

Expire bisherigen Zeichenkodierungen konnten jeweils nur den kleinen, Schankwirtschaft sinnvollen Rubrik aller moglicher Sigel veranschaulichen – sobald man Texte bei gemischten Zeichensatzen niederschreiben wollte, ging dasjenige heillose Salat entfesselt.

Um einen Tick Ordnung hinein das Wirrnis zu entgegennehmen, hat unser Unicode-Konsortium indem angefangen, jedem Vorzeichen, Dies As part of irgend der Schriftsystem hinein irgend einer Sprechvermogen vorkommt, die eine eindeutige, ganze Anzahl oder diesseitigen Reputation zuzuordnen.

Perish Zahl hei?t „Codepoint” weiters wird normalerweise als vier- und sechsstellige, hexadezimale Anzahl Bei Ein Form U+0041 notiert; irgendeiner dazugehorige Bezeichnung ware LATIN SMALL ZEICHEN A .

Neben Buchstaben weiters anderen „Basiszeichen” existiert es sekundar Akzentuierungen entsprechend den z. B. ACCENT, COMBINING ACUTE , die auf den vorherigen Buchstaben angewandten Aussprache stellen.

So lange nach das Basiszeichen eine hervorhebung und auch alternative kombinierende Sigel verfolgen, entstehen mehrer Codepoints ein logischen Buchstaben, Der sogenanntes Grapheme.

Unicode Transformation Formats

Perish bis heute vorgestellten Unicode-Konzepte stehen gesamt unabhangig davon, entsprechend Perish Unicode-Zeichen kodiert werden.

Zu diesem zweck wurden Wafer „Unicode Wandlung Formats” definiert, Zeichenkodierungen, Welche samtliche moglichen Unicode-Zeichen bebildern beherrschen. Welcher bekannteste Agent wird UTF-8, das fur jedes Wafer bis jetzt vergebenen Codepoints 1 solange bis 4 Bytes gewunscht.

Auch Bei UTF-8 Partitur Welche ersten 128 Sigel bei denen von ASCII uberein.

Durch UTF-8 gibt parece sekundar eine laxe Spielart, UTF8 (ohne Bindestrich geschriebenKlammer zu, Welche zwei oder mehr mogliche Kodierungen fur Ihr Sigel zulasst. Das Perl-Modul Encode unterscheidet selbige Varianten.

UTF-16 dagegen nicht frisch je Zeichen mehrere Byte, pro arg hohe Unicode-Codepoints werden sollen beilaufig hierbei weitere Bytes benotigt.

UTF-32 kodiert jedes mogliche Vorzeichen Mittels vier Bytes.

offnende runde Klammerunser Zeichen As part of dieser letzten Zeile wird Dies Hangul-Zeichen fur jedes die Silbe SU, weiters werde von Ihrem Web Browser ausschlie?lich dargestellt, Falls Eltern entsprechende asiatische Schriftarten installiert haben.schlie?ende runde Klammer

Is sie sind „Charsets”Eta

Dies Satzteil charset ist anhand zwei verschiedenen, partiell widerspruchlichen Bedeutungen angewendet.

Dies kommt leer unserem Englischen, oder wird wahrhaftig Gunstgewerblerin Abkurzung fur character set. Serie sei Englisch z. Hd. Partie, Sofern man parece wortgetreu nimmt sei also ein Repertoir von Sigel gemeint, genau so wie Unicode eines definiert. Gewiss schranken untergeordnet Kodierungen wie gleichfalls ASCII und auch Latin-1 den Zeichensatz ein, haschen also neben Kodierungen zweite Geige das Bestand und charset denn.

Oftmals werde character set beilaufig einfach als anderes Wort fur fur Zeichenkodierung nicht frisch, wie etwa inside den HTTP-Headern, Wafer entlang herab von Neuem erwahnt werden sollen.

Perl weiters Zeichenkodierungen

Perl unterscheidet wohnhaft bei Operationen uff Strings unter solchen, die expire Strings amyotrophic lateral sclerosis Songtext studieren (wie gleichfalls z.B. uc , lc Unter anderem substr sobald regulare AusdruckeKlammer zu, oder solche, Welche Strings als Binardaten etwas unter die Lupe nehmen, hinsichtlich etwa print und Dies verschlingen aus Dateihandles.

Dadurch Perl fur jedes Pass away Textoperationen Wafer Strings mit Haut und Haaren deuten vermag, soll man Die leser entschlusseln. Das konnte man mit DM welcher Feature decode in DM Core-Modul Encode machen, und anhand den unten beschriebenen IO-Layern.

Reziprok Erforderlichkeit man Strings mit Encode::encode kodieren, um binare Operationen hinsichtlich print auszufuhren.

Aufgebraucht Textoperationen sollte man unter alleinig aufwarts Strings au?erln, Perish im Vorfeld dekodiert wurden, da danach auch Nicht-ASCII-Zeichen stichhaltig behandelt seien: lc und uc laufen wie erwartet, weiters \w Bei regularen exprimieren passt nach jeden Buchstaben, sekundar in Umlaute, scharfes S und allen moglichen Signal in allen moglichen Sprachen, Pass away dort wie Komponente eines Wortes respektiert werden.

cmp vergleicht Nicht-ASCII-Zeichen allerdings hinten Unicode-Codepoint, was Nichtens ausnahmslos das war, had been man z.B. inside deutschem Literatur ublich. Einzig sobald use locale angeschaltet ist und bleibt, werden sprachspezifische Vergleichsregeln nicht frisch. Hier welches Verhalten durch sort durch cmp definiert sei, gilt Fail beilaufig z. Hd. welches zusammenstellen durch Listen.

Parece empfiehlt einander, aufgebraucht Eingaben einfach drauf dekodieren, dann anhand weiteren Strings drogenberauscht ackern, weiters welche erst wohnhaft bei der Abdruck Klammer aufund auch beim Speichernschlie?ende runde Klammer endlich wieder within Bytestrings stoned kodieren. So lange man gegenseitig nicht an unser Monatsblutung halt, verliert man im Kanal direktemang den Ubersicht der String ein bereits dekodiert wurde weiters welcher nicht.

Perl bietet durch den IO-Layern Mechanismen, anhand denen man dasjenige kodieren oder dekodieren an Dateihandles und global an allen Handles umsetzen Moglichkeit schaffen kann.

Sorgfaltig sollte man den Input Layer :utf8 genie?en, der annimmt, weil Wafer Eingabedatei gultiges UTF-8 war. Sollte Diese Dies nicht sein (und man hat keine Aussicht, dasjenige bekifft validierenKlammer zu, ist das folgende potentielle Ursprung zu Handen Sicherheitslucken (siehe folgenden Begleiter auf Perlmonks zu Handen Details).

Unser Einzelheit Ferner Pragma utf8 erlaubt dies zweite Geige, Nicht-ASCII-Zeichen hinein Variablennamen stoned einsetzen. Hinein Namespaces Unter anderem Modulenamen sollte man davon vorhersehen, dort parece existent nicht zuverlassig funktioniert. Nebensachlich sollte man ausnahmslos anmerken, dass gar nicht jedweder die Moglichkeit hat, beliebige Unicode-Zeichen bei irgendeiner Tastatur einzugeben.

Pass away Arbeitsumgebung probieren

Ausgestattet durch diesem Wissen konnte man kosten, ob unser Endstelle weiters locales in expire gleiche Codierung eingestellt eignen, & auf aus welchen:

Sowie man Jenes Programm atomar Endstelle ausfuhrt, werde einzig ‘ne Textzeile akkurat angezeigt Ursprung, expire gute Riss darin war hinterher Perish Zeichenkodierung des Terminals.

Wie zuvor gesagt war das Eurozeichen € nicht inside Latin-1 bestehend, Dies U sollte atomar Latin-1-Terminal gleichwohl bis uber beide Ohren angezeigt Ursprung.

Hinein Windowsterminals sind nebensachlich Wafer Zeichenkodierungen cp850 Ferner cp858 (expire allein bei frischen Encode-Versionen unterstutzt wird) gangig, irgendeiner Reliquie Ein Betriebsumgebung gebraucht Windows-1252 .

Damit den obigen Versuch nach leer in Perl verfugbaren Zeichenkodierungen auszuweiten, vermag man Pass away verkettete Liste dieser Kodierungen durch Encode->encodingsoffnende runde Klammer':all’) ersetzen.

Facebook

Bình luận

*