OEs verschwinden?
am 18.04.2006 18:09:24 von christoph.soellner
Hi *,
ich habe eine Abfrage und muss ganz am Anfang der Seite ein
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET collation_connection = 'utf8_general_ci'");
ausfuehren, sonst gehen meine anderen SELECTs nicht.
Sobald ich das aber getan habe, werden Umlaute nicht dekodiert
in der HTML-Seite dargestellt, obwohl ich:
- Die DB und Tabellen als UTF8 (utf8_general_ci) angelegt habe
- im HTML das charset auf utf8 gestellt habe
- Die datei-Kodierung auf UTF8 stehen habe
Wenn ich obere Zeilen weglasse, geht es einwandfrei.
Jemand eine Idee?
Christoph
Re: OEs verschwinden?
am 18.04.2006 18:55:22 von Helmut Chang
Christoph Soellner schrieb:
> - im HTML das charset auf utf8 gestellt habe
Wie? Per oder sendest du brav den korrekten HTTP-Header?
gruss, heli
Re: OEs verschwinden?
am 18.04.2006 20:23:34 von christoph.soellner
> Wie? Per oder sendest du brav den korrekten HTTP-Header?
Jo, so. Und http-header weiss nicht, das macht der php/apache
doch eigentlich selbst oder?
Und noch etwas ist komisch, wenn ich mir die Datei mit dem
Editor von Windows anschaue (reMaus->Quelltext anzeigen),
kommt das OE einwandfrei als OE heraus. Also ist die Datei
an sich doch schon UTF8 oder?
Christoph
Re: OEs verschwinden?
am 18.04.2006 20:36:24 von Frank Schenk
Christoph Soellner wrote:
>>Wie? Per oder sendest du brav den korrekten HTTP-Header?
>
> Jo, so. Und http-header weiss nicht, das macht der php/apache
> doch eigentlich selbst oder?
> Und noch etwas ist komisch, wenn ich mir die Datei mit dem
> Editor von Windows anschaue (reMaus->Quelltext anzeigen),
> kommt das OE einwandfrei als OE heraus. Also ist die Datei
> an sich doch schon UTF8 oder?
>
> Christoph
In Windows gibts keinen Editor, da gibts nur Zahnweh aka Notepad /
Würgpad etc.
Hexeditor (natürlich mit Charsetdingensdircheneinstellbarkeit) saugen
und gucken was wirklich in der Datei steht, gerade unter Windows sollte
man NICHTS glauben, was einem da in M$Programm angezeigt wird.
gruß, Frank
Re: OEs verschwinden?
am 18.04.2006 20:49:27 von Helmut Chang
Christoph Soellner schrieb:
>> Wie? Per oder sendest du brav den korrekten HTTP-Header?
> Jo, so. Und http-header weiss nicht, das macht der php/apache
> doch eigentlich selbst oder?
Genau. Und wenn der sendet "Content-Type: text/html; charset=iso-8859-1"
kannst du dich mit dem in "echten" Brausen brausen gehen ;-).
gruss, heli
Re: OEs verschwinden?
am 18.04.2006 23:14:30 von Joerg Behrens
Christoph Soellner schrieb:
> Hi *,
>
> ich habe eine Abfrage und muss ganz am Anfang der Seite ein
> mysql_query("SET CHARACTER SET utf8");
> mysql_query("SET collation_connection = 'utf8_general_ci'");
>
> ausfuehren, sonst gehen meine anderen SELECTs nicht.
> Sobald ich das aber getan habe, werden Umlaute nicht dekodiert
> in der HTML-Seite dargestellt, obwohl ich:
>
> - Die DB und Tabellen als UTF8 (utf8_general_ci) angelegt habe
> - im HTML das charset auf utf8 gestellt habe
> - Die datei-Kodierung auf UTF8 stehen habe
>
> Wenn ich obere Zeilen weglasse, geht es einwandfrei.
> Jemand eine Idee?
>
> Christoph
Helmut hats ja schon angedeutet. Sofern der Apache ein Charset vorgibt
kannst du mit keinen HTML Mitteln diesen aendern und den Browser
veranlassen diesen zu ignorieren.
Das heisst du must deinem Apache sagen keinen Charset mehr vorzugeben um
dann in JEDEM Dokument selber dafuer Sorge tragen. Die meisten Apachen
werden als Default ein iso-8859-1 haben was deine Problem erklaert.
Allerdings kannst du diesen Apache Header aus deinem PHP Script ohne
Probleme ueberschreiben. Dies ist das was du machen solltest.
Gruss
Joerg
ps: in der aktuellen c`t ist ein passender Artikel zu genau diesem Thema
Re: OEs verschwinden?
am 19.04.2006 07:32:18 von Helmut Chang
Joerg Behrens schrieb:
> Das heisst du must deinem Apache sagen keinen Charset mehr vorzugeben...
Warum? Er muss seinem Apachen sagen, UTF-8 zu senden, weil er genau das
benötigt.
> Allerdings kannst du diesen Apache Header aus deinem PHP Script ohne
> Probleme ueberschreiben. Dies ist das was du machen solltest.
IMO nur zweite Wahl. Ich mach das nur, wenn ich keine Möglichkeit habe,
das im Server selbst einzustellen.
gruss, heli
Re: OEs verschwinden?
am 19.04.2006 09:54:57 von Joerg Behrens
Helmut Chang schrieb:
> Joerg Behrens schrieb:
>
>> Das heisst du must deinem Apache sagen keinen Charset mehr vorzugeben...
>
> Warum? Er muss seinem Apachen sagen, UTF-8 zu senden, weil er genau das
> benötigt.
Weil es dann fuer alle Dokumente bzw. fuer die entsprechende
Erweiterungen gilt.
>
>> Allerdings kannst du diesen Apache Header aus deinem PHP Script ohne
>> Probleme ueberschreiben. Dies ist das was du machen solltest.
>
> IMO nur zweite Wahl. Ich mach das nur, wenn ich keine Möglichkeit habe,
> das im Server selbst einzustellen.
Ist das aber nicht meistens der Fall?
Gruss
Joerg
--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
Re: OEs verschwinden?
am 19.04.2006 11:05:49 von Frank Schenk
Joerg Behrens wrote:
> Helmut hats ja schon angedeutet. Sofern der Apache ein Charset vorgibt
> kannst du mit keinen HTML Mitteln diesen aendern und den Browser
> veranlassen diesen zu ignorieren.
>
> Das heisst du must deinem Apache sagen keinen Charset mehr vorzugeben um
> dann in JEDEM Dokument selber dafuer Sorge tragen. Die meisten Apachen
> werden als Default ein iso-8859-1 haben was deine Problem erklaert.
>
> Allerdings kannst du diesen Apache Header aus deinem PHP Script ohne
> Probleme ueberschreiben. Dies ist das was du machen solltest.
Das Thema hatten wir letzt erst und wenn ich mich recht entsinne wertet
der Apache die Angaben in den Meta-Tags aus und sendet den richtigen Header.
Ich seh da auch kein Problem, egal welches Charset ich in die Metatags
haue werden diese (dank des Apache Headers?!) korrekt erkannt.
Allerdings sind Browser teilweise sehr eigenwillig was das Auswerten von
Charset Angaben angeht.
gruß, Frank
Re: OEs verschwinden?
am 19.04.2006 11:27:06 von Joerg Behrens
Frank Schenk schrieb:
> Joerg Behrens wrote:
>> Helmut hats ja schon angedeutet. Sofern der Apache ein Charset vorgibt
>> kannst du mit keinen HTML Mitteln diesen aendern und den Browser
>> veranlassen diesen zu ignorieren.
>>
>> Das heisst du must deinem Apache sagen keinen Charset mehr vorzugeben
>> um dann in JEDEM Dokument selber dafuer Sorge tragen. Die meisten
>> Apachen werden als Default ein iso-8859-1 haben was deine Problem
>> erklaert.
>>
>> Allerdings kannst du diesen Apache Header aus deinem PHP Script ohne
>> Probleme ueberschreiben. Dies ist das was du machen solltest.
>
> Das Thema hatten wir letzt erst und wenn ich mich recht entsinne wertet
> der Apache die Angaben in den Meta-Tags aus und sendet den richtigen
> Header.
Nein tut er nicht. Eine *.txt hat auch wenig META Tags.
> Ich seh da auch kein Problem, egal welches Charset ich in die Metatags
> haue werden diese (dank des Apache Headers?!) korrekt erkannt.
> Allerdings sind Browser teilweise sehr eigenwillig was das Auswerten von
> Charset Angaben angeht.
Der c`t Artikel geht da drauf ein.
Gruss
Joerg
--
TakeNet GmbH Mobil: 0171/60 57 963
D-97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
Re: OEs verschwinden?
am 19.04.2006 11:30:29 von christoph.soellner
> Das Thema hatten wir letzt erst und wenn ich mich recht entsinne wertet
> der Apache die Angaben in den Meta-Tags aus und sendet den richtigen
> Header.
Das kann ich widerlegen. Meiner tut es nicht (2.0.50).
> Ich seh da auch kein Problem, egal welches Charset ich in die Metatags
> haue werden diese (dank des Apache Headers?!) korrekt erkannt.
Auch das kann ich widerlegen. Charset im Meta-Tag ist im IE und FireFox
1.5 egal, er nimmt immer das ISO.
> Allerdings sind Browser teilweise sehr eigenwillig was das Auswerten von
> Charset Angaben angeht.
dito.
Habe jetzt per PHP den richtigen header gesetzt. Es tut.
Danke euch,
Christoph
Re: OEs verschwinden?
am 19.04.2006 11:35:23 von Michael Fesser
..oO(Frank Schenk)
>Das Thema hatten wir letzt erst und wenn ich mich recht entsinne wertet
>der Apache die Angaben in den Meta-Tags aus und sendet den richtigen Header.
So war es ursprünglich vorgesehen, aber kein bekannter Server macht das.
Muß auch nicht.
>Ich seh da auch kein Problem, egal welches Charset ich in die Metatags
>haue werden diese (dank des Apache Headers?!) korrekt erkannt.
Auf Websites ist ein "Meta-Charset" überflüssig, im Falle von XHTML
sogar komplett sinnlos. Der Browser muß _vorher_ wissen, wie er ein
Dokument zu decodieren hat.
>Allerdings sind Browser teilweise sehr eigenwillig was das Auswerten von
>Charset Angaben angeht.
IE ist eigenwillig, Browser nicht. SCNR
Micha