MySQL Umlaute werden nicht richtig abgerufen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
code
codierung
datei
datenbank
header
http
kodierung
liegen
manual
not
set
setzen
tabelle
text
type
umlaut
url
verbindung
webseite
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hast du die Zeichencodierung shcon überprüft?
Es sollte in der Datenbank "utf8" für die Spalten ausgewählt sein, genauso sollte deine Webseite mit UTF-8 arbeiten.
Dazu gibt es aber schon einige Threads:
https://www.lima-city.de/thread/umlauteproblem-mit-mysql
http://www.lima-city.de/thread/umlaute-mit-str_replace-umwandeln
... -
Das stimmte zwar und ich hab das jetzt geändert, aber es funktioniert immer noch nicht, kann das auch an der md5-Verschlüsselung liegen?
Beitrag zuletzt geändert: 13.2.2012 16:18:00 von carl-schoeneich -
carl-schoeneich schrieb:
Das stimmte zwar und ich hab das jetzt geändert, aber es funktioniert immer noch nicht, kann das auch an der md5-Verschlüsselung liegen?
Du hast die Usernamen verschlüsselt in der DB liegen?
Leg mal jetzt nach der Veränderung neue User an und teste diese mal. -
carl-schoeneich schrieb:
MD5 ist keine Verschlüsselung!!!
... kann das auch an der md5-Verschlüsselung liegen?
Ich schreib jetzt nicht nochmal den Unterschied auf. Hier kann das nachgelesen werden.
copynpaste schrieb:
Sinnloser als das geht es wohl kaum....
Du hast die Usernamen verschlüsselt in der DB liegen?
"Verschlüssel" (damit meine ich hash) bitte nur die Passwörter und lass die Benutzernamen im Plaintext. -
Von verschlüsselt kann ja wohl nicht die Rede sein.
Und die Umlaute bekommt er ja so auch nicht mehr aus der Datenbank.
Im Prinzip gibt es folgende Stellen, die eine Kodierung benötigen:
Tabelle (z.B. in PHPMyAdmin setzen)
Datenbank (~)
Datenbankclient (mysql_set_charset)
HTML-Seite(z.B. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />)
Sobald eins von diesen Gliedern die falsche Codierung hat, kommt Müll raus.
Um die Umlaute richtig anzuzeigen würde ich UTF8 empfehlen.
-
sektor schrieb:
Tabelle (z.B. in PHPMyAdmin setzen)
Datenbank (~)
Datenbankclient (mysql_set_charset)
HTML-Seite(z.B. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />)
...
Datei-Codierung (beim Speichern einer Datei)
Default-Codierung (.htaccess)
PHP-Header, so verwendet -> header('Content-Type: text/html; charset=utf-8');
und so weiter...
Auf jeden Fall kann man versuchen, mittels utf8_encode, bzw. utf8_decode die Strings wieder zu korrigieren...
Beitrag zuletzt geändert: 13.2.2012 18:16:24 von anti-atomkraft -
Also erstens: Ich habe die Usernamen nicht verschlüsselt in der Datenbank liegen!
Aber am Anfang sind die Passwörter gleich dem Usernamen!
Und wenn der username z.B. martin.müller ist geht das irgendwie nicht!
Welche Kodierung genau sollte die DB haben, da gibt es ja richtig viele utf-8...!!!
Beitrag zuletzt geändert: 13.2.2012 19:30:42 von carl-schoeneich -
carl-schoeneich schrieb:
beim create databases if not exists ... steht bei mir immer 'DEFAULT CHARACTER SET utf8'
Also erstens: Ich habe die Usernamen nicht verschlüsselt in der Datenbank liegen!
Aber am Anfang sind die Passwörter gleich dem Usernamen!
Und wenn der username z.B. martin.müller ist geht das irgendwie nicht!
Welche Kodierung genau sollte die DB haben, da gibt es ja richtig viele utf-8...!!! -
Hier ein Tipp von mir:
PHP:
<?php header('Content-Type: text/html; charset=utf-8'); ?>
Gleiches gilt für normal mysql, jedoch kann dort nur die query Version, zum setzen der UTF8, für die Verbindung, genutzt werden.<?php $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB); $mysqli->set_charset('utf8'); # oder $mysqli->query("SET NAMES 'utf8'"); ?>
(x)HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
HTML5:
<meta http-equiv="content-type" content="text/html" /> <meta charset="utf-8" />
MySQL:
CREATE TABLE IF NOT EXISTS `tablename` ( ..... ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Beitrag zuletzt geändert: 18.2.2012 11:50:57 von dexus85 -
dexus85 schrieb:
Gewöhn dir bitte an
<?php header('Content-Type: text/html; charset=utf-8'); ?>
<?php $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB); $mysqli->set_charset('utf8'); # oder $mysqli->query("SET NAMES 'utf8'"); ?>
als Kommentarzeichen zu benutzen.//
dexus85 schrieb:
Mit mysql_set_charset() wird die Zeichencodierung festgelegt. Die Manpage von PHP dazu:
Gleiches gilt für normal mysql, jedoch kann dort nur die query Version, zum setzen der UTF8, für die Verbindung, genutzt werden.Dies ist der bevorzugte Weg zur Änderung des Zeichensatzes. Über mysql_query() SET NAMES ... auszuführen, wird nicht empfohlen.
dexus85 schrieb:
Die Zeile kannst du dir gleich sparen, da sie von den meisten Browsern einfach ignoriert wird. Verwende stattdessen den equivalänten HTTP-Header:
(x)HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<?php header('Content-Type: text/html; charset=utf-8'); ?>
dexus85 schrieb:
Wichtig ist nur das:
MySQL:
CREATE TABLE IF NOT EXISTS `tablename` ( ..... ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `tablename` ( ..... ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
hackyourlife schrieb:
dexus85 schrieb:
Mit mysql_set_charset() wird die Zeichencodierung festgelegt. Die Manpage von PHP dazu:
Gleiches gilt für normal mysql, jedoch kann dort nur die query Version, zum setzen der UTF8, für die Verbindung, genutzt werden.Dies ist der bevorzugte Weg zur Änderung des Zeichensatzes. Über mysql_query() SET NAMES ... auszuführen, wird nicht empfohlen.
Merci, da kann man sehen das ich schon lange nicht mehr die MySQL Man Page auf PHP aufgerufen habe :-)
Btw. Warum sollte ich mir
statt//
angewöhnen?#
Ich verwende meistens // nur zum schnellen kommentieren nutze ich #, weiß nicht mal warum -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage