[PHP] Zeichen werden zu z.B. ü

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Hapablap, 29. Juni 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 29. Juni 2009
    Zeichen werden zu z.B. ü

    Hi,

    mir ist aufgefallen, dass, wenn manche Leute auf meiner Seite etwas abspeichern, also Daten in die Datenbank geschrieben werden, manchmal die Zeichen so aussehen: ü. Jedoch, wenn ich Umlaute benutze, kommt das bei mir nicht vor. Scheinbar benutzen diese Leute aber Umlaute und es kommt vor.
    Weiß jemand woran das liegt? Mir selbst ist das halt noch nie passiert. Meine Datenbank ist komplett auf UTF-8. Muss ich das noch was in den HTML-Dateien einstellen? Im Meta-Tag oder so?

    Danke schon mal!
    Hapablap

    Edit: Ok habs grad mit dem Meta-Tag probiert, dann werden aber Datensätze die ein Umlaut haben falsch ausgegeben.
     
  2. 30. Juni 2009
    AW: Zeichen werden zu z.B. ü

    Führ mal als ersten Befehl in der DB aus (bevor du andere Abfragen machst)

    Code:
    SET NAMES utf8
    ...

    Wenn das nicht klappt musst du die Ausgabe von der DB mit utf8_decode dekodieren...
     
  3. 30. Juni 2009
    AW: Zeichen werden zu z.B. ü

    ja, kann möglich sein:

    schau mal, ob du eine solche zeile im header deiner page hast:
    PHP:
    < meta http - equiv = "Content-Type"  content = "text/html; charset=ISO-8859-1"  />
    wenn ja, dann nach

    PHP:
    < meta http - equiv = "Content-Type"  content = "text/html; charset=UTF-8"  />
    ändern, oder eben diese zeile einfügen, wenn vorher der meta-tag nicht vorhanden war... das sollte das problem bei NEUEN einträgen beheben

    wenn die zeile nicht vorhanden war, dann haben verschiedene browser verschieden encodierten text an dich versendet. einmal utf8, einmal iso, etc... daher kann es vorkommen, dass beim ändern texte falsch angezeigt werden, die vorher richtig angezeigt wurden und umgekehrt...
     
  4. 30. Juni 2009
    AW: Zeichen werden zu z.B. ü

    Ok, ich kam jetzt noch nicht dazu es zu ändern, aber wenn ich die alten Einträge dann wieder anpassen möchte, muss ich alle Umlaute mit den demensprechenden Codes wie &auml; usw. ersetzen? Ich probiers heut Abend mal aus, danke auf jeden Fall mal.
     
  5. 30. Juni 2009
    AW: Zeichen werden zu z.B. ü

    mom... mit $auml; umgehst du die sache auf html ebene, das problem ist woanders...

    also wenn ich mich recht entsinne, dann entstehen aus einem umlaut, 2 zeichen (wie z.b. "ü") weil du utf8 in der datenbank hast, jedoch der browser dies als ISO interpretiert. in dem fall hilft der veränderte meta-tag, damit der browser gezwungen wird, die utf8 zeichen auch als solche zu interpretieren.

    jetzt hast du aber noch umlaute in der datenbank, die ISO codiert sind, der browser bekommt die und interpretiert sie in utf8 (weil du ihm ja gesagt hast, er soll dies so machen). der ISO-code hat aber in utf8 keine entsprechenden zeichen, daher stellt z.b. firefox diese zeichen nun als diese komischen rauten mit fragezeichen dar.

    um das zu fixen ist mir eben folgendes eingefallen:
    die entsprechende datenbank z.b. mit phpmyadmin exportieren, wenn du die dann aufm rechner hast, "ü" etc. in nem texteditor mit suchen und ersetzen in umlaute umwandeln. dann die datei mit dem texteditor utf8 codiert speichern und wieder in die datenbank einfügen!
     
  6. 10. Juli 2009
    AW: Zeichen werden zu z.B. ü

    So, ich hab es nun endlich geschafft und wollte hier natürlich die Auflösung nicht vorbehalten

    Ich denke, das war der Knackpunkt:

    Auf jeden Fall bin ich so vorgegangen (meine Tabellen waren zwar utf8 kodiert, aber nicht die Datenbank!):

    1. Datenbank exportiert
    2. Datenbank gelöscht
    3. Datenbank neu angelegt im utf8 Format
    4. Datenbank importiert
    5. Alle Templates mit notepad++ zu utf8 ohne BOM konvertiert
    6. Datenbankverbindung wie oben beschrieben auf utf8 umstellen

    Das müsste alles gewesen sein...

    Achja nein noch was:
    str_replace und einige andere Funktionen kommen bei Umlauten nicht mehr klar, das liegt scheinbar an der neuen Länge für diese. Einfache Lösung ist vorher ein utf_decode zu machen und evtl. im nachhinein noch ein utf8_encode (PHP: Manual Quick Reference PHP: utf8_encode - Manual).

    - closed -
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.