Zeichensatz bei LAMP - System
Zeichensatz bei LAMP - System
am 15.03.2007 13:14:29 von Martin Wetz
Hallo
Wahrscheinlich passt mein posting nicht so 100%ig in diese Gruppe,
aber als newbie möchte ich nicht gleich mit Crossposting einsteigen.
Auf meinen Linux Rechner mit Suse 10.2 und Apache Webserver läuft
eine MySQL - Datenbank die ich mit einen php Programm abfrage.
In der Datenbank ist eine Spalte, einer Tabelle mit utf-8 eingerichtet.
Das php-Programm sendet als erstes folgenden String an den Webserver:
header("Content-Type: text/html; charset=utf-8");
Auch im Header des Documents ist als Zeichensatz utf-8 eingetragen.
content="text/html; charset=utf-8">
Mein Browser (Firefox) ist auch brav der Meinung das die Seite
utf-8 codiert ist. Zu minderst muss man ihn manuell auf den
alten Windows Zeichensatz (1252-1 oder so ähnlich) umstellen.
Nur dann zeigt er alle deutschen Umlaute korrekt an, mit der
Einstellung Zeichnesatz = utf-8 bekomme ich nur ein Fragezeichen
angezeigt bei einen Umlaut.
Und ich weià nun nicht so richtig wo in der Kette
MySQL -> php -> Apache -> Browser der Fehler liegen könnte.
Vielleicht hat jemand einen Tipp für mich?
Vielen Dank im voraus
--
Mit freundlichen GrüÃen
Martin Wetz
Re: Zeichensatz bei LAMP - System
am 15.03.2007 13:20:34 von do.not.REMOVETHAT
Martin Wetz schrieb:
> Und ich weià nun nicht so richtig wo in der Kette
> MySQL -> php -> Apache -> Browser der Fehler liegen könnte.
Sind denn die Daten richtig in der DB? GiGo. Garbage in > Garbage out.
GrüÃe, Matthias
--
http://www.trullala.de
--
Der Trend geht ganz eindeutig zur Zweitsignatur.
Re: Zeichensatz bei LAMP - System
am 15.03.2007 13:35:48 von Joerg Behrens
Martin Wetz schrieb:
> Hallo
>
>
>
> Wahrscheinlich passt mein posting nicht so 100%ig in diese Gruppe,
> aber als newbie möchte ich nicht gleich mit Crossposting einsteigen.
>
> Auf meinen Linux Rechner mit Suse 10.2 und Apache Webserver läuft
> eine MySQL - Datenbank die ich mit einen php Programm abfrage.
> In der Datenbank ist eine Spalte, einer Tabelle mit utf-8 eingerichtet.
> Das php-Programm sendet als erstes folgenden String an den Webserver:
> header("Content-Type: text/html; charset=utf-8");
> Auch im Header des Documents ist als Zeichensatz utf-8 eingetragen.
> content="text/html; charset=utf-8">
> Mein Browser (Firefox) ist auch brav der Meinung das die Seite
> utf-8 codiert ist. Zu minderst muss man ihn manuell auf den
> alten Windows Zeichensatz (1252-1 oder so ähnlich) umstellen.
> Nur dann zeigt er alle deutschen Umlaute korrekt an, mit der
> Einstellung Zeichnesatz = utf-8 bekomme ich nur ein Fragezeichen
> angezeigt bei einen Umlaut.
>
>
> Und ich weià nun nicht so richtig wo in der Kette
> MySQL -> php -> Apache -> Browser der Fehler liegen könnte.
> Vielleicht hat jemand einen Tipp für mich?
Beim Verdingungsaufbau zur DB ist der gewuenschte Zeichensatz
anzugeben... tust du das nicht kommen Defaultwerte zum Einsatz welche
das sind must du in der my.ini nachgucken.
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-StraÃe 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Re: Zeichensatz bei LAMP - System
am 16.03.2007 08:01:15 von Martin Wetz
Hallo
Am Thu, 15 Mar 2007 13:20:34
+0100 schrieb Matthias P. Wuerfl:
> Martin Wetz schrieb:
>
>> Und ich weià nun nicht so richtig wo in der Kette
>> MySQL -> php -> Apache -> Browser der Fehler liegen könnte.
>
> Sind denn die Daten richtig in der DB? GiGo. Garbage in > Garbage out.
ja
--
Mit freundlichen GrüÃen
Martin Wetz
Re: Zeichensatz bei LAMP - System
am 16.03.2007 08:02:45 von Martin Wetz
Hallo
> Beim Verdingungsaufbau zur DB ist der gewuenschte Zeichensatz
> anzugeben... tust du das nicht kommen Defaultwerte zum Einsatz welche
> das sind must du in der my.ini nachgucken.
Davon steht in meinen schlauen Buch nichts.
Besteht die Möglichkeit das Du mir das näher erklärst?
--
Mit freundlichen GrüÃen
Martin Wetz
Re: Zeichensatz bei LAMP - System
am 16.03.2007 09:16:57 von Joerg Behrens
Martin Wetz schrieb:
> Hallo
>
>
>> Beim Verdingungsaufbau zur DB ist der gewuenschte Zeichensatz
>> anzugeben... tust du das nicht kommen Defaultwerte zum Einsatz welche
>> das sind must du in der my.ini nachgucken.
>
> Davon steht in meinen schlauen Buch nichts.
> Besteht die Möglichkeit das Du mir das näher erklärst?
>
http://blog.koehntopp.de/archives/1360-Zeichensatzaerger.htm l
http://blog.koehntopp.de/archives/1424-MySQL-Zeichensatz-Gru ndlagen.html
Rest dann im Manual.
Die Defaulteinstellung ist normal Latin1. Allerdings hat Gentoo z.b UTF8
und auch der PhpMyAdmin fordert generell UTF8 an vom Server und verkauft
es dementsprechend auch nach aussen.
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-StraÃe 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Re: Zeichensatz bei LAMP - System
am 16.03.2007 09:31:02 von Joerg Behrens
Martin Wetz schrieb:
> Hallo
>
>
>> Beim Verdingungsaufbau zur DB ist der gewuenschte Zeichensatz
>> anzugeben... tust du das nicht kommen Defaultwerte zum Einsatz welche
>> das sind must du in der my.ini nachgucken.
>
> Davon steht in meinen schlauen Buch nichts.
> Besteht die Möglichkeit das Du mir das näher erklärst?
>
Du sagst deinem DB Server im Moment das er die Daten als Latin1 (oder
was immer dein Default ist) schicken soll machst dem Browser aber dann
die Anweisung es als UTF8 zu interpretieren. Erzeugt natuerlich nicht
das gewuenschte Ergebnis.
1. Entweder per PHP die Daten vor der Ausgabe nach UTF8 umwandeln
oder
2. Beim Verbindungsaufbau zur DB sagen das UTF8 gewuenscht ist.
Solltest du aber 2. benutzen und dann die Strings mit PHP nich
bearbeiten wollen dann mache dich aus was gefasst wenn du falscherweise
die normalen Stringfunktionen genommen hast. Hier waere mbstring*
angebracht gewesen.
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-StraÃe 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Re: Zeichensatz bei LAMP - System
am 16.03.2007 11:30:03 von Martin Wetz
Hallo
Am Fri, 16 Mar 2007 09:31:02
>>> Beim Verdingungsaufbau zur DB ist der gewuenschte Zeichensatz
>>> anzugeben... tust du das nicht kommen Defaultwerte zum Einsatz welche
>>> das sind must du in der my.ini nachgucken.
>>
>> Davon steht in meinen schlauen Buch nichts.
>> Besteht die Möglichkeit das Du mir das näher erklärst?
>>
>
> Du sagst deinem DB Server im Moment das er die Daten als Latin1 (oder
> was immer dein Default ist) schicken soll machst dem Browser aber dann
> die Anweisung es als UTF8 zu interpretieren. Erzeugt natuerlich nicht
> das gewuenschte Ergebnis.
>
> 1. Entweder per PHP die Daten vor der Ausgabe nach UTF8 umwandeln
> oder
> 2. Beim Verbindungsaufbau zur DB sagen das UTF8 gewuenscht ist.
Vielen Dank für Deine Antwort.
Ich würde auch gerne Variante 2 benutzen.
Aber eine my.ini kann ich nicht finden.
Muss aber zugeben das ich deine Surftipps von deinen letzten
Posting noch nicht gelesen habe.
>
> Solltest du aber 2. benutzen und dann die Strings mit PHP nich
> bearbeiten wollen dann mache dich aus was gefasst wenn du falscherweise
> die normalen Stringfunktionen genommen hast. Hier waere mbstring*
> angebracht gewesen.
die php erweiterung mbstring ist installiert
--
Mit freundlichen GrüÃen
Martin Wetz
Re: Zeichensatz bei LAMP - System
am 16.03.2007 12:04:33 von Claus Reibenstein
Martin Wetz schrieb:
> Am Fri, 16 Mar 2007 09:31:02
Komische Einleitungszeile.
>> Solltest du aber 2. benutzen und dann die Strings mit PHP nich
>> bearbeiten wollen dann mache dich aus was gefasst wenn du falscherweise
>> die normalen Stringfunktionen genommen hast. Hier waere mbstring*
>> angebracht gewesen.
>
> die php erweiterung mbstring ist installiert
Es geht nicht darum, dass das Modul installiert ist, sondern dass Du
auch die entsprechenden Funktionen benutzt, also mb_strlen() statt
strlen() etc.
GruÃ. Claus
Re: Zeichensatz bei LAMP - System
am 16.03.2007 12:52:06 von Joerg Behrens
Martin Wetz schrieb:
> Hallo
> Am Fri, 16 Mar 2007 09:31:02
>
>>>> Beim Verdingungsaufbau zur DB ist der gewuenschte Zeichensatz
>>>> anzugeben... tust du das nicht kommen Defaultwerte zum Einsatz welche
>>>> das sind must du in der my.ini nachgucken.
>>> Davon steht in meinen schlauen Buch nichts.
>>> Besteht die Möglichkeit das Du mir das näher erklärst?
>>>
>> Du sagst deinem DB Server im Moment das er die Daten als Latin1 (oder
>> was immer dein Default ist) schicken soll machst dem Browser aber dann
>> die Anweisung es als UTF8 zu interpretieren. Erzeugt natuerlich nicht
>> das gewuenschte Ergebnis.
>>
>> 1. Entweder per PHP die Daten vor der Ausgabe nach UTF8 umwandeln
>> oder
>> 2. Beim Verbindungsaufbau zur DB sagen das UTF8 gewuenscht ist.
>
> Vielen Dank für Deine Antwort.
> Ich würde auch gerne Variante 2 benutzen.
> Aber eine my.ini kann ich nicht finden.
> Muss aber zugeben das ich deine Surftipps von deinen letzten
> Posting noch nicht gelesen habe.
Das erklaert dann die aussage mit der my.ini. Was da drin steht ist doch
irrelevant fuer deinen Fall.
Jede Anwendung, bzw. SQL Statement kann doch andere Anforderungen haben
was du mit einem Eintrag in der my.ini garnicht abdecken kannst. Aus
diesem Grunde ist nach dem Verbindungsaufbau nun zusagen welcher Charset
benutzt wird.
$query = 'SET NAMES UTF8';
$res = mysql_query($query, $con) or die('blubb');
Gruss
Joerg
--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-StraÃe 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de