eXma » Diskutieren » Computer und Technik
Startseite - Veranstaltungen - Mitglieder - Suche
Vollständige Version anzeigen: [beendet] problem mit umlauten in PHP und mySQL
onkelroman
ich habe eine webanwendung, die speichert inhalte aus einer textdatei in eine datenbank, sie extrahiert inhalte aus dem netz und speichert sie in eine datenbank und sie gibt das alles auch wieder aus. aber die umlaute, die treiben mich an den rand der verzweifelung.

entweder die umlaute werden gleich falsch in die datenbank übernommen (aus schön wird sch?n, sch�n oder sogar sch) oder sie werden auf der seite falsch dargestellt. manche seiten enthalten normalen html-code und datenbank-inhalte, hier ist es dann so, dass entweder das eine stimmt ODER das andere. seit ein paar stunden experimentiere ich jetzt mit folgenden parametern:
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> im html-header
  • header("Content-Type: text/html; charset=utf-8"); im php-teil
  • datenbank-kollationen bei mysql (utf8_general_ci, utf8_german1_ci,..)
  • tabellen-kollationen bei mysql
  • feld-kollationen bei mysql
  • dem php-befehlen utf8_decode und utf8_encode innerhalb des skripts
  • der kodierung der textdatei durch den editor (utf8, ansi)
  • mysql_query("SET NAMES 'utf8'"); schon bei der verbindungsherstellung
  • ...
aber NICHTS funktioniert wie gewünscht. es ist zum verzweifeln.. ständig stehts falsch in der datenbank, oder steht dort richtig aber wird falsch ausgegeben, oder ist überall falsch. ich versteh mittlerweile überhaupt nicht mehr, wo ich was einstellen muss..


wer kann mir helfen?
onkelroman
ok.. ich habs. nach 5 stunden rumprobieren und verzweifeln.
wirklich verwirrende lösung: ich brauche zwei verschiedene verbindungen zur db. für fast alle fälle diese hier:

CODE
$verbindung = mysql_connect("localhost","root","****");
if (!$verbindung) { die('Fehler bei der Verbindung: ' . mysql_error()); }
mysql_select_db("meine_db", $verbindung);
mysql_query("SET NAMES 'utf8'");


und für einen einzigen sonderfall dasselbe, aber ohne die letzte zeile. und zwar den, wo eine ansi-codierte textdatei in die db überführt wird. ("codier die doch einfach in utf8, dann brauchste die zeile auch nicht" - denkste!)
das ist die einzige konstellation, die tadellos funktioniert. schwerd bekloppt.
JanLo
Dann hast du dich jetzt für das T-Shirt zu deinem Problem qualifiziert.
onkelroman
jup. cool! winner.gif