Apostrophe in utf-8 in IE9

JA ... ist es.

Wenn du mit der PHP-Funktion header(String) einen HTTP-Header setz ist es sehr wohl etwas anderes als wenn du in einem META-Tag einen HTML-Header setzt.

Der HTTP-Header gibt nämlich an in welchem Format die HTTP-Nutzdaten übertragen werden.
Der HTML-Header gibt lediglich an wie eine HTML-Render-Engine Charset spezifische Zeichen darzustellen hat.
 
Eventuell wertet der IE die HTTP-Header-Angabe eher aus, als die Meta-Angabe im HTML-Code.

Der Webserver sendet ohnehin eine Angabe über den Content-Type. Standardmäßig ist da keine Angabe über das Charset enthalten.

Das lässt logisch zurück vollziehen, das der IE einen Header mit Content-Type bekommen hat, in dem keine Angabe über den Zeichensatz vorhanden ist. Er wählt seinen Standard-Zeichensatz aus und behält ihn solange bei, bis ihm ein Webserver (egal welcher) eine andere Angabe sendet.

Wenn du jetzt immer Charset=utf-8 sendest, sollte der IE sich damit zufrieden geben. Es könnte sein, das sich andere Browser anders verhalten, daher würde ich die Zeile mit dem HTML-Meta-Tag durchaus drin lassen.
 
Der HTTP-Header hat Vorrang, aber das meta-Tag würde ich auch drinlassen.
Es gibt ja auch Fälle, in denen man die Seite ohne HTTP-Header sieht...
lokal usw...
 
Ich danke euch allen.
Zumindest weiss ich woran es liegt, und (nach erstem Test) scheint es immer zu funktionieren, wenn beiden Zeilen vorhanden sind.
 
Es ist schon merkwürdig das ein Browser mit der Anzeige eines ASCII-Zeichens Probleme hat ...
Ich gehe hier eher von einem Charset-Fehler der Datenbank aus ... also das aus der DB gar kein UTF8/Unicode kommt sondern irgendwas anderes ... und sich dann durch die ganzen Charset-Tags irgendwie das Hochkommata an eine andere Code-Position schiebt und dadurch geschreddert wird.
 
Erstmal, das ist kein Hochkomma, sondern ein Apostroph, also nicht ' sondern ´
Das Ganze ist eine Multilingua-Seite und hat ähnliche Probleme mit ein paar italienischen Sonderzeichen, während deutsche Umlaute und polnische Sonderzeichen ohne Probleme gehen, unabhängig von der Sprache des OS.
In der DB sind ganz sicher sämtliche Textfelder in UTF-8 (genauer utf8_general_ci) und die DB Verbindung ist auch sicher UTF-8, sonst gäbe es das Problem auch mit anderen Browsern und mit viel mehr Zeichen.
 
Also das Apostroph hat ANSI *nach Latin-1* 180 ... liegt also schon außerhalb des ASCII und ist damit ein Kandidat für Encoding-Fehler ... desshalb ist es auch egal was im META-Tag steht ... wichtig ist hier der HTTP-Header Charset und Encoding ...

Und wie gesagt : das ganze sind nur Vermutungen ...
 
Sehr wahrscheinlich handelt es sich nicht um den Accent Grave (0x60) sondern eher um Accent Acute (0xc2 0xb4), welcher ein Unicode-Zeichen ist. Damit ist das Thema ASCII-Zeichen auch vom Tisch :D
 
Verdammt ... da gibt es auch noch mehr als einen von der Sorte ? Jetzt hab ich keine Lust mehr mitzuspielen.

Scherz bei Seite ...

Als erstes dachte ich ja ans Hochkommate 0x27 ... dann ans "Quote" 0xB4 ... aber das es jetzt noch eins jenseits von 0xFF als Unicode-Char gibt ... das übersteigt meine Kenntnisse in PHP.
 
Zurück