On 2012-07-06 11:25, Arno Welzel <
use...@arnowelzel.de> wrote:
> Am 05.07.2012 20:46, schrieb Peter J. Holzer:
>> On 2012-07-05 09:40, Arno Welzel <
use...@arnowelzel.de> wrote:
>>> Am 04.07.2012 16:37, schrieb Peter J. Holzer:
>>>
>>>> On 2012-07-03 10:11, Arno Welzel <
use...@arnowelzel.de> wrote:
>>>>> Am 02.07.2012 20:37, schrieb Michael Landenberger:
>>>>>> Am 02.07.2012 17:17, schrieb Arno Welzel:
>>>>>>
> [...]
>>>>> Die Bytfolge 0xC3, 0xA4 *ist* schon ein "�", dargestellt als UTF-8.
>>>>
>>>> Nein, das ist zun�chst einmal einfach nur die Byte-Folge 0xC3 0xA4. Zu
>>>> einem "�" wird es erst dadurch, dass eine Applikation es als "�"
>>>> interpretiert, also z.B. die korrekten Glyphe darstellt, es als
>>>> lateinischen Buchstaben erkennt, etc.
>>>
>>> Genau das schrieb ich ja - dargestellt als UTF-8. Man muss der
>>> Applikation, die das anzeigen soll nur mitteillen, dass sie es als UTF-8
>>> zu interpretieren hat. Da muss nichts dekodiert werden.
>>
>> Doch, die Applikation muss dekodieren. Und man muss ihr mitteilen,
>> welche Kodierung verwendet wurde, damit sie richtig dekodieren kann.
>
> Ja - und, was schrieb ich gerade eben? Liest Du auch, worauf Du antwortest?
Ja. Darf ich die Frage zur�ckgeben?
> Es ging mal um die Frage, wie man einem Renderer - also einer
> Applikation oder einer eingebetteten Komponente - einen Text �bergeben
> muss, damit er korrekt dargestellt wird.
Richtig. Und ich habe darauf hingewiesen, dass diese beiden F�lle
unterschiedlich zu behandeln sind: Einer externen Applikation kann ich
typischerweise nur einen Bytestream �bergeben
(<
slrnjv11cd.97...@hrunkner.hjp.at>,
<
slrnjv3t23.uo...@hrunkner.hjp.at>), bei einer eingebetteten
Komponente h�ngt es vom API ab
(<
slrnjv3rv0.uo...@hrunkner.hjp.at>).
> Im Verlauf dieser Fragestellung wurde dann die Idee erw�hnt, dass der
> Text "dekodiert" wird und dann an den Renderer �bergeben wird.
Ja, der OP hat behauptet, dass er das macht. Ich habe darauf
hingewiesen, dass das im Widerspruch zu seiner Behauptung steht, dass er
einen externen Renderer verwendet. (Der Widerspruch hat sich dadurch
aufgekl�rt, dass er als Zeichen-Typ einen 8-Bit-Typ verwendet, wodurch das
(konzeptionell notwendige) Encoding zu einer NOP wird)
Bei einem internen Renderer kann das aber sinnvoll oder sogar notwendig
sein. Beispielsweise w�re es naheliegend, dass man einer Java
HTML-Komponente[1] ein St�ck HTML-Code als String �bergibt und nicht als
ByteBuffer oder byte[] (oder gar als String, bei dem jeder char ein Byte
repr�sentiert - ein konzeptioneller Fehler, den man leider bei machen
Java-APIs findet).
> Ich habe dazu eingewandt, dass man auch nach der "Dekodierung" nicht
> pl�tzlich "Zeichen" statt "Bytefolgen" existieren, sondern nur wieder
> Bytefolgen, die aber nun eine andere Bedeutung haben.
Und das ist falsch. Nach der Dekodierung sind es eben - in der Semantik
des Programms und wahrscheinlich auch der verwendeten Programmiersprache
- Zeichen und keine Bytes mehr. Klar, RAM besteht aus Bytes[2], aber
solange Du nicht in Assembler programmierst, hat Dich das nicht zu
k�mmern. Und selbst wenn Du in Assembler programmierst, hat gibt es
applikationsinterne Typen - eine Folge von Bytes repr�sentiert eine
x-Koordinate, eine andere ein Unicode-Zeichen und eine dritte einen
Zeitpunkt.
> Die darstellende Komponente oder Applikation muss *immer* wissen, wie
> die gelieferten Bytes zu lesen sind, egal ob nun ISO-8859-1, UTF-8 oder
> Unicode bin�r.
Nein, wenn die Komponente schon Zeichen bekommt (also z.B. in Java einen
String), dann muss sie nicht mehr wissen, wie das File urspr�nglich
kodiert war (vielleicht gab es auch gar nie ein File - die Applikation
kann den String ja on the fly zusammengebastelt haben).
>>>> Typischerweise muss dazu aus diesen beiden Bytes ein Wert des Typs
>>>> "Zeichen" gemacht werden. Wenn Zeichen also applikationsintern als
>>>> Unicode-Codepoints dargestellt werden (heutzutage eine plausible
>>>> Annahme), dann muss muss aus der Bytefolge der Codepoint berechnet
>>>> werden, in C z.B. so:
> [...]
>>> Und welche Applikation braucht das? Ich kenne keinen halbwegs aktuellen
>>> Browser oder Texteditor, der mit UTF-8 nicht umgehen k�nnte.
>>
>> Jeder Browser oder Texteditor, der "mit UTF-8 umgehen kann", kann (und
>> wird) UTF-8 dekodieren.
>
> Also ich muss die als UTF-8 vorliegenden HTML-Dokumente auf meinem
> Webserver nicht erst dekodieren, damit sie ein Browser, der UTF-8
> versteht und dort abruft, anzeigen kann.
Nat�rlich nicht. Der Webserver verarbeitet das File ja nicht, er gibt es
nur 1:1 weiter. Auch auf diesen Fall hatte ich bereits hingewiesen
(<
slrnjv8l9b.ba...@hrunkner.hjp.at>).
Wenn der Webserver aber das File doch verarbeitet (z.B. irgendwelchen
eingebetteten Code ausf�hrt), dann muss er es wahrscheinlich dekodieren.
> Ja - dass der Browser selbst intern die Daten umwandeln muss, damit er
> sie �ber das API des OS auch anzeigen lassen kann, ist klar
Wir reden hier �ber einen Mailer. Der ist in der gleichen Situation wie
ein Browser: Er bekommt einen Bytestrom und einen Content-Type und soll
das f�r Menschen lesbar darstellen.
Daf�r kann er unter Umst�nden vorhandene Komponenten verwenden. Ob f�r
diese Komponenten der Bytestrom vorverarbeitet werden muss, oder ob es
reicht, den Bytestrom samt Kontext zu �bergeben, h�ngt von der
Komponente ab. Gerade im Fall eines Browsers, dem ein file:-URL
�bergeben wird, ist so eine Verarbeitung aber fast sicher notwendig
(charset, cid:-URLs, Security, ...) und damit eine Dekodierung und
anschlie�ende Kodierung sinnvoll.
> - aber es ging hier ja nicht darum, was man tun muss, wenn man einen
> Browser oder einen Texteditor programmieren will.
Falls Du hier auf <
slrnjvbo8r.v1...@hrunkner.hjp.at>
anspielst: Da war mit "die Applikation" die gesamte Applikation gemeint,
inklusive der ben�tzten Infrastruktur (externe Hilfsprogramme,
Libraries, OS-Code, Hardware, ...). Ich dachte, das war im Kontext klar,
aber vielleicht war es das nicht - sorry.
�berall sonst in diesem Thread habe ich soweit ich sehe immer deutlich
gemacht, dass ich mich auf eine spezifische Situation beziehe ("Wenn Du
...", "Falls er wirklich ...", ...).
> Du scheinst hier etwas durcheinander zu bringen.
Die Versuchung ist gro�, darauf mit "Nein, Du bringst hier was
durcheinander" zu antworten. Aber das w�re nicht konstruktiv. Ich hoffe,
ich habe die schlimmsten Missverst�ndnisse oben ausger�umt.
hp
[1] Gerade kurz in die Swing und JavaFX Doku reingeschaut: Kann das
sein, dass die keine HTML-Komponente haben?
[2] Aus Sicht des ABIs. Hardwarem��ig besteht es eher aus Worten.
Aber das sollte den Programmierer noch weniger k�mmern.