Benutzernamen mit Umlauten unsichtbar

Veneficus
Problembeschreibung:
Mir ist aufgefallen wenn ich in meinem Forum ein neuen Benutzer Registriere und dieser Umlaute im Namen beinhaltet, wird der Benutzername des Benutzers nirgendwo angezeigt. Selbst im ACP hab ich keinen Benutzernamen, praktisch unsichtbar! Der Benutzer existiert aber. Das gleiche geschieht auch wenn ich einen Benutzer über das ACP erstelle. Habe keinerlei probleme mit den Umlauten, nur bei Benutzernamen mit Umlauten... Kann ich nicht ganz nachvollziehen.

Kann auch nicht sagen ob das die ganze Zeit schon so ist, da ich vorher keinen Benutzer mit Umlauten erstellt habe.

Fehlermeldung:
keine Fehlermeldung.

Link zum Forum und Screenshot (KEINE Bilderhoster, per Dateianhang):
http://thewinneris.bplaced.net
Wenn nötig öffne ich das Forum.

Was wurde zuletzt geändert oder eingebaut?
Nur Design änderungen nicht großartiges außer "member ~ groupcolor"
Beckebans
Das liegt an bplaced. Die haben nen PHP Update gemacht, so dass alle htmlspecialchars() und htmlentities() jetzt ne andere Kodierung haben.

Guck mal hier: http://einseinself.net/thread.php?threadid=15752
Veneficus
Danke.

php:
1:
2:
3:
4:
5:
6:
7:
$code=htmlspecialchars($code);

$post['username']=rehtmlspecialchars($post['username']);

$preview_topic=$parse->textwrap(htmlspecialchars($topic),30);

$result $db->query_first("SELECT userid, usecookies, nosessionhash FROM bb".$n."_users WHERE username = '".addslashes(htmlspecialchars($_POST['l_username']))."' AND password = '".$wbb_userpassword."' AND activation = 1");


Jede zeile steht für ein beispiel, dort müsste ich also über all das "htmlspecialchars" ändern? Wirklich bei allen die so sind?

Die "htmlspecialchars_irgendwas" alle so lassen? Wenn ich das nun richtig verstanden habe.
Beckebans
Jap, bei deinem Beispiel die Zeilen 1, 5 und 7. Bei Zeile 3 ist ein re am Anfang, das braucht auch nicht geändert zu werden.
Schrimm
Zitat:
Original von Beckebans
Das liegt an bplaced. Die haben nen PHP Update gemacht, so dass alle htmlspecialchars() und htmlentities() jetzt ne andere Kodierung haben.

Guck mal hier: http://einseinself.net/thread.php?threadid=15752


Hallo,

Eine bessere Lösung wäre es, einfach die Datenbank auf "UTF-8" zu ändern, was auch nachträglich möglich ist. Augenzwinkern
JiShi
Du meinst dieses latin1_blabla umzustellen? Das hatte ich versucht, aber leider ohne Erfolg! Was habe ich da falsch gemacht?
Beckebans
Zitat:
Original von Schrimm
Zitat:
Original von Beckebans
Das liegt an bplaced. Die haben nen PHP Update gemacht, so dass alle htmlspecialchars() und htmlentities() jetzt ne andere Kodierung haben.

Guck mal hier: http://einseinself.net/thread.php?threadid=15752


Hallo,

Eine bessere Lösung wäre es, einfach die Datenbank auf "UTF-8" zu ändern, was auch nachträglich möglich ist. Augenzwinkern


Hab ich noch nie gemacht. Behält der denn dann auch alle Sonderzeichen und Umlaute?
Schrimm
Zitat:
Original von JiShi
Du meinst dieses latin1_blabla umzustellen? Das hatte ich versucht, aber leider ohne Erfolg! Was habe ich da falsch gemacht?


Hallo,

Man muss auch darauf achten, dass der Browser richtig eingestellt ist.
Dies kann man beispielsweise mit Metadaten verwirklichen:
php:
1:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Dann sollte der Eintrag in die Datenbank auch richtig funktionieren.

Für "Anfänger" sollte das alternative Vorgehen von Beckebans, weit bequemer und einfacher sein. Augenzwinkern

Zitat:
Original von Beckebans
Hab ich noch nie gemacht. Behält der denn dann auch alle Sonderzeichen und Umlaute?

Die Sonderzeichen und Umlaute müssen wahrscheinlich neu codiert werden, aber verschwinden sollten sie eigentlich nicht.
lostris
Hallo, bevor ich jetzt die ganzen php-Dateien durchgehe, wo trägt man die Meta-Daten denn ein? Hatte schon alles umgestellt gehabt, hatte bei einer Bekannten geholfen, bei mir aber leider nicht. Hab keine Lust jetzt alles wieder auf latin1_shwedish_ci wieder umnzustellen -.-

Edit: Hat sich erledigt.
Schrimm
Alternativ kann man auch über die php.ini das "default_charset" auf utf8 umstellen.

Oder mit dem Befehl, in der global.php:
php:
1:
ini_set("default_charset","UTF-8");