Umlaute bei 1&1 werden nicht angezeigt
Karlson vom Dach
- sonstiges
0 Der Martin0 Karlson vom Dach0 dedlfix
0 Jens Holzkämper
Hallo alle zusammen,
Meine Datenbank:
(von phpmyadmin)
test-tabelle1 utf8_general_ci
test-tabelle2 utf8_general_ci
----------------------------------------------------
2 Tabellen Gesamt 1.141 -- latin1_german1_ci
Das zeigt er mir im phpmyadmin an. Wenn ich nun versuche die Tabellen abzufragen per PHP fehlen die Umlaute.
So wird eben ausgegeben:
übelster test
anstelle von
übelster test
Die Datenbank hat noch Umlaute, wenn ich Sie downloade über phpmyadmin so hat sie keine Umlaute mehr.
Ganz offensichtlich haben die Tabellen utf8, die gesamte Datenbank wird aber als latin1_german1_ci angesprochen, was dann natürlich zu den Problemen führt.
per sql habe ich mit charset utf8 eingestellt.
Ich werde nun testweise die Tabellen als latin1 anlegen, dann wird es klappen, aberhttp://de.wikipedia.org/wiki/UTF-8 utf8 hat natürlich seine Vorteile.
Gut möglich, das ich bei 1&1 weniger Rechte habe um dergleichen zu ändern.
Hallo,
test-tabelle1 utf8_general_ci
test-tabelle2 utf8_general_ci2 Tabellen Gesamt 1.141 -- latin1_german1_ci
Das zeigt er mir im phpmyadmin an.
wer ist "er"?
Wenn ich nun versuche die Tabellen abzufragen per PHP fehlen die Umlaute.
So wird eben ausgegeben:
übelster test
Offensichtlich sind die Daten in der DB in UTF-8 codiert, du verkaufst sie dem Browser aber anscheinend als ISO-8859-1 oder etwas Verwandtes.
Ich werde nun testweise die Tabellen als latin1 anlegen, dann wird es klappen, aberhttp://de.wikipedia.org/wiki/UTF-8 utf8 hat natürlich seine Vorteile.
Besser wäre, die Verarbeitung in UTF-8 zu belassen, und dem Browser nur die richtige Codierung anzugeben. Wenn du sowieso PHP einsetzt, könntest du den richtigen HTTP-Header mit der Funktion header() setzen; die AddDefaultCharset-Direktive in einer .htaccess-Datei wäre ebenfalls eine Möglichkeit.
Gut möglich, das ich bei 1&1 weniger Rechte habe um dergleichen zu ändern.
Was die Verwendung einer .htaccess-Konfigurationsdatei angeht, weiß ich es nicht; aber von PHP aus hast du auf jeden Fall alle Möglichkeiten.
Ciao,
Martin
Hallo,
test-tabelle1 utf8_general_ci
test-tabelle2 utf8_general_ci2 Tabellen Gesamt 1.141 -- latin1_german1_ci
Das zeigt er mir im phpmyadmin an.
wer ist "er"?
Der Computer :)
Quelltext der Website gibt oben aus:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Also von daher passt alles, das besagt folgendes
1. ich habe selfhtml gelesen
2. ich habe gegoogelt
3. ich habe hier richtig zitiert
4. ich habe irgendwo einen fehler
5. wenn phpmyadmin bei den Tabellen anzeigt "utf8" und unten im Gesamt "latin1", so wird das wohl der Fehler sein, das bedeutet
6a) ich werde googeln und den Fehler finden
6b) ich werde die Tabellen als latin1 speichern und werde nie wissen an was es lag.
Hi,
Quelltext der Website gibt oben aus:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Und was sagt der wichtigere HTTP-Header?
cu,
Andreas
Hi,
Quelltext der Website gibt oben aus:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />Und was sagt der wichtigere HTTP-Header?
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi,
Quelltext der Website gibt oben aus:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />Und was sagt der wichtigere HTTP-Header?
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Das ist kein HTTP, das ist HTML.
MfG ChrisB
Und was sagt der wichtigere HTTP-Header?
HTTP/1.1 200 OK
Date: Fri, 03 Feb 2012 13:48:43 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Cache-Control: max-age
Connection: close
Content-Type: text/html;charset=utf-8
Tach!
test-tabelle1 utf8_general_ci
test-tabelle2 utf8_general_ci2 Tabellen Gesamt 1.141 -- latin1_german1_ci
- wenn phpmyadmin bei den Tabellen anzeigt "utf8" und unten im Gesamt "latin1", so wird das wohl der Fehler sein, das bedeutet
Das bedeutet erstmal gar nichts. Die Angabe bei der Datenbank ist ein Default-Wert für neu anzulegende Tabellen, wenn dabei keine explizite Angabe gemacht wurde. Der Wert bei den Tabellen ist wiederum nur ein Defaultwert für neu anzulegende Felder, wenn dabei keine explizite Angabe gemacht wurde. Lediglich die Einstellung der einzelnen Felder ist relevant für die Kodierung, die MySQL _zum_Speichern_ verwendet. Zum Kommunizieren mit Clients wird die auf der Verbindung ausgehandelte Kodierung verwendet. Wenn du nichts aushandels, wird ein Defaultwert verwendet, der möglicherweise nicht zu deinen Erwartungen passt. Jedenfalls kodiert MySQL zwischen der jeweiligen Feldkodierung und der Verbindungskodierung um, wenn das notwendig ist. Das wichtigste beim Arbeiten mit MySQL ist also, dass du nach dem Verbindungsaufbau angibst, welche Kodierung du zu verwenden wünschst.
Genaueres im Wiki: Themenschwerpunkt Zeichenkodierung. Dort steht nicht nur etwas über MySQL sondern auch wie das Zusammenspiel zwischen Webserver, Dokumenten und dem Browser diesbezüglich funktioniert.
dedlfix.
Tach!
So wird eben ausgegeben:
übelster test
Offensichtlich sind die Daten in der DB in UTF-8 codiert, [...]
Was in der Datenbank kodiert ist, ist nicht so einfach feststellbar, da sich diese wie eine Blackbox verhält. Wenn man übelste Zeichen beim Abfragen bekommt, ist das lediglich ein Indiz für die auf der Verbindung zum Client verwendete Kodierung.
dedlfix.
Tach,
Das zeigt er mir im phpmyadmin an. Wenn ich nun versuche die Tabellen abzufragen per PHP fehlen die Umlaute.
hast du der Mysql-Verbindung auch mittgeteilt, dass du UTF-8 sprechen möchtest: http://wiki.selfhtml.org/wiki/Themen:Zeichencodierung/MySQL?
mfg
Woodfighter