Moin!
Man benötigt 2 Byte, um ein Unicode-Zeichen darstellen zu können
Das ist falsch! Unicode umfaßt den Wertebereich von U+000000 bis U+10FFFF, also insgesamt 1.114.112 verschiedene Zeichen. Diese lassen sich nicht mit 2 Bytes (= 16 Bit) codieren, sondern erfordern mindestens 21 Bit. Da 21 Bit mit existierenden Rechnern nicht verarbeitet werden können, wären mindestens 24 Bit (=3 Byte) erforderlich. Da 3 Byte für den Speicherzugriff von 32-Bit-Prozessoren äußerst krumm sind, werden durchaus auch 32 Bit (=4 Byte) für die Zeichendarstellung verwendet.
jedoch nur 1 Byte, um ein ASCII Zeichen darzustellen.
Es gibt keine Gleichzeitigkeit von "Unicode" und "ASCII". Ein Textstring ist entweder in der einen Codierung, oder in der anderen.
Dass gleiche Bytewerte in zwei verschiedenen Codierungen das gleiche Zeichen meinen, ist zwar durchaus Absicht der Hersteller, aber im Prinzip nur als zufällig anzusehen. Keinesfalls sollte es dazu verleiten, auf die Angabe der verwendeten Codierung zu verzichten!
Wenn in einer HTML-Seite nun beides gemischt ist - woher soll der Browser dann wissen, was er wie darzustellen hat?
Wie gesagt: Eine HTML-Seite hat genau EINE Codierung, die von vorn bis hinten gilt. Mischen gibts nicht.
Oder ist die Angabe des Zeichensatzes im HTML-Header für den Webserver und der bereitet die Seite bereits in UTF-8 auf?
Ein Webserver leitet nur Bytes durch.
Wenn deine Seite laut Deklaration UTF-8 sein soll, es aber nicht ist, kommt Müll raus.
PS: Warum denn jetzt plötzlich doch wieder ein Webserver? Ich denke, es gibt keinen.
- Sven Rautenberg
"Love your nation - respect the others."