Antworten auf deine Fragen:
Neues Thema erstellen

utf8 encodieren und decodieren

xxxsharkyxxx

Siebenschläfer

hallo, ich arbeite gerade an einem internen Nachrichtensystem für eine Community. Dabei wird jeweils eine Nachricht eingetippt, diese wird in die Datenbank eingetragen. Die DB sieht in etwa so aus:

| Absender | Empfänger | Nachricht | Zeit und Datum |

Nun kommt aber das Problem: Wenn ich die Daten nun aus der Datenbank auslese, hat das programm Schwierigkeiten mit Umlauten (ä,ö,ü), Leerzeichen, Sonderzeichen etc.
Ich glaube ich muss dazu das ganze irgendwie in utf-8 codieren und dann beim auslesen wieder decodieren. Jedoch ist dieses Gebiet noch Neuland für mich und ich habe kein vernünftigs Tutorial dazu gefunden. Kann mir da jemand helfen? Das Feld in der MYSQL Tabelle ist übrigens schon auf "utf-8" eingestellt.

Ich schreib mal kurz wie das in etwa aussieht:
1. Nachricht eintragen
PHP:
<?php
    $nachricht = "insert nachrichten";
    $nachricht .= "(absender, empfänger, datum, nachricht) values ";
    $nachricht .= "('" . $_SESSION["name"] . "', '" . $_POST["empfänger"] . "', '" . date() . "', '" . $_POST["nachricht]" . "')";
    mysql_query($nachricht);
?>
2. Alle empfangenen Nachrichten anzeigen:
PHP:
<?php
$nachrichten = mysql_query("SELECT
                    *
                FROM
                    nachrichten
                WHERE 
                    empfänger = '". $_SESSION["name"] ."'");
                    
while($message = mysql_fetch_assoc($nachrichten))
  {
    $absender = $message["absender"];
    $datum = $message["datum"];
    $nachricht = $message["nachricht"];
    echo $absender ."hat dir am ". $datum ." folgende Nachricht geschickt: <br /> ". $nachricht;
  }
?>
Evtl. sind noch kleine Fehler drin, habs jetzt einfach mal kurz aufgeschrieben. Um die Fehler gehts mir auch gar nicht, sondern wie ich das jetzt so in die Datenbank eintrage und auch wieder auslese, damit mir auch die Umlaute etc. korrekt angezeigt werden.

Gruss sharky
 

K

kyle66

Guest

AW: utf8 encodieren und decodieren

Am besten, du stellst komplett auf UTF-8 um.

mittels php
Code:
header('Content-Type: text/html; charset=UTF-8');

und html
Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

oder wenn du unbedingt ISO-8859-1 willst/brauchst helfen dir die PHP funktionen utf8_decode() und utf8_encode() weiter.

Grüße
kyle
 
Zuletzt bearbeitet von einem Moderator:

ChrisvA

Aktives Mitglied

AW: utf8 encodieren und decodieren

Später bei HTML kann man auch einfach die Funktion htmlentities($string) benutzen. die wandelt z.B. ä in auml; um. Zusammen mit nl2br($string) klappen dann auch noch die Zeilenumbrüche.
Um keine Konflikte mit der Datenbank zu bekommen würde ich darauf achten, welches Zeichenformat in MySQL eingestellt ist und mich dann daran anpassen, bzw. das SQL-Format anpassen.
 
K

kyle66

Guest

AW: utf8 encodieren und decodieren

Wenn als Content-Type im HTML-Quelltext aber utf-8, bzw. iso-8859-1 angegeben ist und die Datei auch im entsprechenden Format abgespeichert ist ist die Umwandlung in HTML-Entities nicht nötig.
 

Chriss1987

me.drinkCoffee();

AW: utf8 encodieren und decodieren

Hi,

ich habe eine kleine Anmerkung bzw Frage zu deinem Script:
prüfst du die, per POST übergebenen Werte vorm Speichern?
Solltest du machen, um Fehlern vorzubeugen, wenn z.B. jemand Hochkommata einfügt, könnte dein Script Probleme bereiten!

Nochwas, statt das aktuelle Datum mit date() einzufügen (sinvoller wäre time(), da date() die time()-Funktion eh nutzt), kannst du auch die MySQL-Funktion NOW() verwenden, dann wird automatisch das eingestellte Datum-Format der Spalte verwendet.

Schöne Grüße aus dem Sauerland!
Chriss
 
Q

qwertzuio

Guest

AW: utf8 encodieren und decodieren

kleine anmerkung: php stellt in der api auch die funktionen utf8_encode() und utf8_decode() zur verfügung... wobei dies kein ersatz für obige lösungen sein soll
 

xxxsharkyxxx

Siebenschläfer

AW: utf8 encodieren und decodieren

Herzlichen Dank für die Antworten.

@kyle: Das hatte ich schon drin, funktioniert aber leider irgendwie nicht...

@chriss: Die Eingaben werden natürlich geprüft, ich wollte jedoch das Beispiel-Script nicht zu gross gestalten, damit das schön übersichtlich bleibt.

Ich werde mich dann mal mit utf8 encode und decode auseinandersetzen.

grüsse sharky
 
K

kyle66

Guest

AW: utf8 encodieren und decodieren

Hast du die Dateien selbst auch UTF-8 abgespeichert? Denn dann sollte es eigentlich gehen.

Grüße
Kyle
 

r3nt5ch3r

~ Allround pG ~

Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben