Heiner KückerCodierung von Texten / Strings |
|
Home Java-Seite Alaska-XBase++-Seite Projekte Philosophien Techniken Konzepte Artikelsystematik Semantisches_Netz Flexible_Columns Weiterentwicklung_Java Fehlerquellen Längencodierung Encoding Programming_by_Contract TimelineStructure Datenstruktur für Kalender oder Terminplaner Sudoku Kontakt / Impressum Links SiteMap Letzte Aktualisierung: 19.02.2004 |
EncodingIn Java kann man spezielle Zeichen (Meta-Zeichen) in String-Literalen durch Escape(Flucht)-Zeichen codieren.
HistorieNach meinen ersten Gehversuchen mit dBase II (1987) lernte ich die Programmiersprache Turbo Pascal. In Turbo-Pascal wurden Strings durch einen Längenmerker am Anfang (ein Byte) und anschliessend den Inhalt des Strings im Speicher abgelegt. Erst danach lernte ich das MS-DOS-API und die Programmiersprache C kennen. Mit Schrecken musste ich feststellen, dass hier Strings ein Nullbyte/ als Ende-Kennzeichnung bekamen. Also konnte ein String niemals ein Null-Byte enthalten.(Nullcharacter, Null Character,Nullzeichen, Null Zeichen) Mit dem professionellerem Arbeiten lernte ich Unix und seine Tools, die Shell und reguläre Ausdrücke kennen. Überall Encoding. Dies zieht sich bis in moderne Technologien wie HTML und XML fort. AlternativeDas oben beschriebene Verfahren nenne ich innenliegendes Encoding. Bei den encodeten Zeichen handelt es sich um Zeichen, die im Text eine spezielle Bedeutung (Metazeichen) haben und deshalb nicht in einem Text dargestellt werden können. Die von mir vorgeschlagene Alternative ist aussenliegendes Encoding.
Statt
Statt Die Metazeichen werden statt durch ein reserviertes Zeichen durch ein reserviertes Wort codiert. Die Lesbarkeit steigt erheblich an.
Erkennung encodeter Textenoch nicht fertig mehrfaches Encodingnoch nicht fertig Beispielehierarchische Datenstrukturen
a { b { c1 = "a/b/c1"; c2 = "a/b/c2"; } }oder alternativ begin a begin b c1 = "a/b/c1"; c2 = "a/b/c2"; end b end astatt <a> <b> <c1>a/b/c1</c1> <c2>a/b/c2</c2> </b> </a> Kommandos
Auf der Shell und in Script-Sprachen werden oft Komandos wie reguläre Ausdrückenoch nicht fertig Protokolle
Hier tendiere ich zu den klassischen Header-Längen-Angaben vor binären
Datenblöcken (eventuell mit Prüfsummen am Ende) statt der aus dem e-Mail-Bereich
bekannten Multipart-Encodings. ProblemeBei Template-Technologien wie Java Server Pages oder dem Eclipse Modeling Framework (JET-Engine) würde umschliessendes Encoding zu weniger Übersichtlichkeit führen. Hier ist innenliegendes Encoding sinnvoll und dazu fällt mir auch keine Alternative ein. Das jeweils günstigere Verfahren muss also von Fall zu Fall entschieden werden. Einflussnehmendes Kriterium ist scheinbar die Dominanz/Anzahl der zu encodenden Zeichen im Verhältnis zum Gesamtdokument. |