Umlaute in DB nicht korrekt (UTF8)

Wie kann ich verhindern, dass ' " etc. escaped werden?

Ok, die Lösung war die Funktion stripslashes() vor dem speichern in die MySQL Datenbank. Ich glaub das liegt an dem WYSIWYG Editor, der HTML benutzt. Falls jemand einen Editor für Textnachrichten mit BB-Code kennt, der leichtz u handhaben ist (ohne große Einarbeitungszeit), der kann mir mal eine PN dazu schicken. Wäre sehr nett, denn leider spuckt Google zu dem Thema so viel mist aus, so dass man selbst nach ner Stunde langsam verzweifelt. Auf der Seite http://www.geniisoft.com/showcase.nsf/WebEditors habe ich auch mal geschaut, aber ich will keinen mit irgendnem komischen Framework dahinter (versteh ich eh nicht) ...


Gruß Radhad
 
Zuletzt bearbeitet:
Falls du MySQL benutzt sollte dies Abhilfe schaffen, einfach direkt als erste Queries zur Datenbank schicken:

Code:
"SET NAMES 'utf8'"
"SET CHARACTER SET 'utf8'"

Und am besten noch folgenden Header in PHP senden:

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

Kann man auch irgendwie global für alle Tabellen das in php-myadmin einstellen die Codierung hab schon gesucht und nichts gefunden, bei mir wird das alles in latin_swedish oder so abgespeichert... Und alle Datensätze einzel zu ändern ist sehr aufwendig.

mfg
 
Bei mir war die DB auf "utf8_unicode_c1" gesetzt. Trotzdem hat der alle Tabellen & Textspalten als "latin1_general_ci" erstellt. Hab sie aber noch nicht alle per Hand geändert :/ Die Tabellen schon, aber die Spalten muss ich auch einzeln ändern *grml*
 
Hallo!

Ich habe jetzt nach meiner DB-Connection folgende Query eingebaut:
PHP:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

Zusätzlich habe ich mit
PHP:
header('Content-Type: text/html; charset=utf-8');
den Charset auf utf8 gestellt.

Und es funktioniert! Die Umlaute werden richtig in der DB gespeichert.
Wers braucht: Wenn man für URLs jetzt Sonderzeichen umwandeln möchte, kann man folgendermaßen vorgehen:
PHP:
function chkChar($string){
		$string = mb_strtolower($string, 'UTF-8');
		$string = str_replace("ä","ae",$string);
		$string = str_replace("ü","ue",$string);
		$string = str_replace("ä","oe",$string);
		$string = str_replace("á","a",$string);
		$string = str_replace("à","a",$string);
		$string = str_replace("é","e",$string);
		$string = str_replace("è","e",$string);
		$string = str_replace("ß","ss",$string);
		$string = str_replace(" ","-",$string);
		$string = str_replace(".","ss",$string);
		$string = str_replace('/',"-",$string);
		$string = str_replace("&","-und-",$string);
		$string = str_replace('"',"",$string);
		return $string;
	}

mfg
 
Zuletzt bearbeitet:
Da habe ich mich wohl zu früh gefreut.

Jetzt werden die Umlaute in der Datenbank als Fragezeichen ausgegeben...

Kann mir da jemand weiterhelfen?

:(
 
Zuletzt bearbeitet:
Nun bisher hast du nur von der Ausgabe der Daten gesprochen. Wie sieht es denn mit der Eingabe der Daten aus? Sind die Eingabedaten denn auch UTF-8-kodiert?
 
Also bei der Eingabe der Daten gehe ich folgendermaßen vor. Ich verwende:
PHP:
header('Content-Type: text/html; charset=utf-8');
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

Die Datenbanken sind "utf8_general_ci".
Die Umlaute in der Datenbank werden auch als solche in phmyadmin angezeigt.

Lediglich bei der Ausgabe erscheinen diese Fragezeichen. Mach ich was falsch?
 
Zuletzt bearbeitet:
Dass du die Ausgabedaten als UTF-8-kodiert klassifizierst, heißt noch lange nicht, dass auch die Eingabedaten UTF-8-kodiert waren.
 
Ich denke das es an der Apache Einstellung liegt.
Das der Default Charset auf Latin 1 steht.

Trotzalledem würde ein Convert des Values für die DB funktionieren..

Code:
function makeutf8( $value )
  {
	$value  = str_replace("\\\"" , "\"" , $value) ;		
	return mb_convert_encoding($value,"UTF-8","LATIN1");
  }

Diese Funktion nutze ich selbst um Latin1 in UTF8 zu Konvertieren (für XML).

Der header('Content-Type: text/html; charset=utf-8'); bezieht sich in diesen fall
auf die Kodierung des Browsers und hat keinerlei wirkung auf MySQL-Connection.


Evtl. Hilft dir das ja..

Doggy
 

Neue Beiträge

Zurück