Re: UTF-8 Erkennung
- From: "Ralf Ullrich" <news@xxxxxxxx>
- Date: Thu, 30 Aug 2007 13:18:17 +0000 (UTC)
Paul Ebermann wrote:
"Thomas Thiele" skribis:
Was du meinst sind sicher Zeichensätze wie cp850, cp437, cp1252,
ISO-8859-1, ISO 8859-1 (bemerke das fehlende "-": das ist wichtig!)
Wo ist der entscheidende Unterschied zwischen den Zeichensätzen
ISO 8859-1 und ISO-8859-1?
Der Entscheidende Unterschied dürfte sein, dass »ISO-8859-1« ein Charset-Bezeichner ist, während »ISO 8859-1« *kein* Charset-Bezeichner ist.
aus RFC 2978 ( http://www.faqs.org/rfcs/rfc2978.html ):
mime-charset = 1*mime-charset-chars
mime-charset-chars = ALPHA / DIGIT /
"!" / "#" / "$" / "%" / "&" /
"'" / "+" / "-" / "^" / "_" /
"`" / "{" / "}" / "~"
ALPHA = "A".."Z" ; Case insensitive ASCII Letter
DIGIT = "0".."9" ; Numeric digit
Charset-Bezeichner dürfen nämlich keine Leerzeichen enthalten. Damit ist »ISO 8859-1« eine reine Prosaform und entspricht etwa »Java SE 6u2« während der tatsächliche Versionsbezeichner »1.6.0_02« lautet.
Nun könnte man TT zu Gute halten, dass er davon ausgeht, dass das Leerzeichen zum Unterstrich kodiert wird, womit wir dann einen angeblichen Unterschied zwischen »ISO_8859-1« und »ISO-8859-1« zu beachten hätten, vor dem er uns hier nett wie er ist warnt. Doch auch dem ist nicht so. Ein Blick in die IANA-Registrierung für Charsets zeigt, dass beide Bezeichner *denselben* Charset bezeichnen.
aus IANA Charsets ( http://www.iana.org/assignments/character-sets ):
Name: ISO_8859-1:1987 [RFC1345,KXS2]
MIBenum: 4
Source: ECMA registry
Alias: iso-ir-100
Alias: ISO_8859-1
Alias: ISO-8859-1 (preferred MIME name)
Alias: latin1
Alias: l1
Alias: IBM819
Alias: CP819
Alias: csISOLatin1
Soweit der Blick aus der Gegenwart. Gehen wir mal zwanzig Jahre zurück. Ebenso wie es heute mit OOXML passert, so wurden auch damals schon Standards von ECMA vorbereitet, um sie später dann von ISO via fast-track weltweit übernehmen zu lassen. So war es zuvor mit ECMA-6 gelaufen, das zu ISO 646 wurde und vielen unter dem Namen US-ASCII besser geläufig sein dürfte. ISO 646 war in der Praxis jedoch nicht international tauglich, was zu vielen Varianten des Mappings führte. Nun muss man sehen, dass die Zeichensätze damals im Hinblick auf Telekommunikation und nicht so ein unbedeutendes Nischenprodukt wie Mikrocomputer definiert wurden. Und in der Telekommunikation war das achte Bit traditionell Teil des Kommunikationsprotokolls und nicht frei für Daten, daher auch die Beschränkung auf 7-bit, selbst bei den nationalen ISO 646 Varianten. Doch dies wandelte sich und so machte sich im Jahre 1985 die ECMA (in Zusammenarbeit mit der ANSI) auf, einen 8-bit Zeichenmapping zu definieren, bzw. gleich mehrere davon. Das Ergebnis dieser Arbeit war ECMA-94 ( http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-094.pdf ). Nun war dieser Standard aber immer noch in einem Aspekt der Tradition der Telekommunikation verbunden: Man wollte den Anwendern die Belegung der *Steuerzeichen* nicht verbindlich vorschreiben, denn nach wie vor waren Datenübertragungen langsam und vor die Wahl gestellt extra Signalleitungen zu nehmen oder extra Signalisierungsbits zu übertragen oder eben doch In-Band, d.h. durch reservierte Datenwerte, zu signalisieren, entschieden sich nach wie vor viele für In-Band als das effizienteste Verfahren, und wollten dann natürlich ihre gerätespezifischen Optionen gerne auf ein einzelnes Zeichen mappen, statt zeitraubende Sequenzen einzuführen.
Es gab aber auch einen ECMA-Standard zu den Steuerzeichen, ECMA-48 ( http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf ) und dieser wird auch in ECMA-94 als Belegungsmöglichkeit für die freigelassenen Spalten erwähnt, wenn auch nicht vorgeschrieben. BTW: ECMA-48 dürfte vielen unter dem Begriff der »ANSI-Escape-Sequenzen« geläufiger sein, denn es gibt auch eine ANSI-Nummer dafür, die mir aber gerade nicht einfällt. Diese Belegung der Steuerzeichen nach ECMA-48, insbesondere die Control-Sets C0 und C1, setzte sich aber zumindest im Computerbereich als Standard tatsächlich durch.
Als die IANA dann 1992 den oben zitierten Zeichensatz-Eintrag aufnahm, so hatte sie damit gleichzeitig, wie bei vielen anderen Zeichensätzen übrigens auch, die offengelassenen Bereiche für die Benutzung im Internet gleich mit festgeschrieben. So lautet denn der vollen Eintrag in der RFC1345 ( http://www.faqs.org/rfcs/rfc1345.html ) auch:
&charset ISO_8859-1:1987
&rem source: ECMA registry
&alias iso-ir-100
&g1esc x2d41 &g2esc x2e41 &g3esc x2f41
&alias ISO_8859-1
&alias ISO-8859-1
&alias latin1
&alias l1
&alias IBM819
&alias CP819
&code 0
NU SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI
DL D1 D2 D3 D4 NK SY EB CN EM SB EC FS GS RS US
SP ! " Nb DO % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
At A B C D E F G H I J K L M N O P Q R S T U V W X Y Z <( // )> '> _
'! a b c d e f g h i j k l m n o p q r s t u v w x y z (! !! !) '? DT
PA HO BH NH IN NL SA ES HS HJ VS PD PU RI S2 S3
DC P1 P2 TS CC MW SG EG SS GC SC CI ST OC PM AC
NS !I Ct Pd Cu Ye BB SE ': Co -a << NO -- Rg '-
DG +- 2S 3S '' My PI .M ', 1S -o >> 14 12 34 ?I
A! A' A> A? A: AA AE C, E! E' E> E: I! I' I> I:
D- N? O! O' O> O? O: *X O/ U! U' U> U: Y' TH ss
a! a' a> a? a: aa ae c, e! e' e> e: i! i' i> i:
d- n? o! o' o> o? o: -: o/ u! u' u> u: y' th y:
Wenn man also von »ISO 8859-1« spricht kann man bestenfalls den Standard meinen und eben nicht einen Zeichensatz. Ein Zeichensatz kann aber diesen Standard implementieren und der von der IANA und der Bezeichnung »ISO_8859-1:1987« geführte und unter dem Alias »ISO-8859-1« bekannte Zeichensatz tut genau dies, er implementiert aber auch gleichzeitig noch andere Standards, wie z.B. ECMA-48. (was ist eiegntlich die ISO Nummer dafür? Ahja, ISO 6429, so ists auch in RFC1345 erwähnt!)
Insofern ist die esoterische Bezeichnungsunterscheidung, wie sie TT und auch die Wikipedia kolportieren, zwar IT-historisch interessant, aber praktisch irrelevant und vor allem nur durch Vermengung von Standardsetzung und Standardimplementierung überhaupt erst irreführend, aber wer Begriffe nicht exakt einsetzt, braucht sich über Verwirrung nicht wirklich wundern.
Und so ist TT's Hinweis, dass »ISO-8859-1« und »ISO 8859-1« etwas unterschiedliches seien zwar nett, aber auch so nutzlos wie der Hinweis, »a« statt »e« sei wichtig in der folgenden Aufzählung: »Asia, Australia, Europe, Europa«. Klar ist es wichtig, aber »Europa« ist ja auch kein Kontinent (in dieser *englischen* Aufzählung) sondern ein Jupitermond. Nur darf man sich fragen warum man in einer Aufzählung von Kontinenten einen Mond aufnimmt, und ebenso darf man sich am Kopf kratzen, wenn in einer Aufzählung von Zeichensätzen ein Standard auftaucht.
So und wer macht das jetzt mal den Idioten, die bei der Wikipedia schreiben klar? Sonst glauben diesen Unsinn, von wegen dem wichtigen Hyphen, noch mehr Leute.
cu
PS: Übrigens entgegen manchen Darstellungen aus der Wikipedia definieren die ISO 8859/? Standards bis heute die Steuerzeichen nicht. Erst ISO 10646, also Unicode, tut dies.
.
- Follow-Ups:
- Re: UTF-8 Erkennung
- From: Paul Ebermann
- Re: UTF-8 Erkennung
- From: Achim Peters
- Re: UTF-8 Erkennung
- From: Ralf Callenberg
- Re: UTF-8 Erkennung
- References:
- UTF-8 Erkennung
- From: Erich Wagner
- Re: UTF-8 Erkennung
- From: Thomas Thiele
- Re: UTF-8 Erkennung
- From: Paul Ebermann
- UTF-8 Erkennung
- Prev by Date: Re: Welche DB fuer Reports?
- Next by Date: Re: UI Komponenten mit zusätzlicher Status Infromation
- Previous by thread: Re: UTF-8 Erkennung
- Next by thread: Re: UTF-8 Erkennung
- Index(es):
Relevant Pages
|