Beste Codierung für verschiedene Sprachen

P

Programer 129

Hallo Zusammen,

Ich will nicht lange erklären damit ich Euch Zeit erspare darum frage ich direkt:
Mit welcher Codierung speichere ich meine Datensätze am besten in meine Datenbank wenn diese mehrere Sprachen umfasst?

Im Moment sind es 5 Sprachen (Deutsch, Englisch, Spanisch, Italienisch und Französisch), ich wollte aber nicht auf diesen sitzen bleiben und je nach gebrauch diese erweitern.

Nur wie speichere ich die Daten am besten in die DB?
Ich kam darauf, als ich nur schon bei der Suche nach Wörtern mit Umlauten falsche, bzw. keine Resultate bekam.

Vielen Dank
 
Was für eine Datenbank ist es denn? Bei MySQL kannst du für jede Tabellenspalte eine eigene Codierung angeben.
 
Sorry, ja es ist eine MySql Datenbank.

Das ist mir auch schon aufgefallen, aber gibt es denn nicht einen übergreifenden Weg welches mir erspart jede einzelne Spalte verschieden zu Codieren?

Ich habe nämlich gemerkt dass wenn die Datensätze (beispielsweise auf Umlaute) überprüfe dann wird mir das Resultat nicht angezeigt (via PhpmyAdmin schon) aber über mein Php-Script nicht, da die Datenbank die Umlaute direkt gespeichert hat.

Jetzt wollte ich wissen ob es eine Funktion (in diesem Falle eher in PHP) gibt um die Zeichen alle richtig zu Codieren -> Dies muss aber Sprachenübergreifend sein.
 
So.... Also ich hab jetzt UTF8 genommen. Das Schreiben sowie das Auslesen aus der Datenbank funktioniert alles Wunderbar!

Mein (Anzeige Dokument, sowie mein Formular sind beide UTF8 kodiert). Wenn ich die Werte aus meiner Datenbank lese dann brauche ich (logischerweise) keine utf8_encode Funktion. Dasselbe beim Schreiben mit utf8_decode.

ABER wenn ich einen Eintrag mache, dann vergleicht meine DB zuerst ob es diesen Eintrag schon gibt. Und zwar mit diesem Statement: SELECT * FROM TabelleX WHERE nameX = "XYZ"

Nun.. Ich lasse mir das Statement (welches dann direkt verarbeitet wird) ausgeben und überprüfe es manuell via PHPmyAdmin. Komischerweise finde ich einen Eintrag über PHPmyAdmin (via SQL-Befehl) aber das PHP-Script mit dem SQL-Vergleich scheint nicht zu funktionieren...

Ich sitze nun schon seit ca. 3 Stunden an dem Problem, aber ich habe noch nichts gefunden was mir hilft. Bitte.. Habt Ihr ein Tipp?
 
Code:
					$abfrageLocation = mysql_query('SELECT * FROM Location WHERE locationname = "'.mysql_real_escape_string($location).'"');
					$num_rowsLocation = mysql_num_rows($abfrageLocation);

					//Wenn Ortschaft nicht in Datenbank existiert, neu anlegen
					if($num_rowsLocation==0){
						//INSERT STATEMENT --AUSKOMMENTIERT
					}

Funktionieren tut das nur wenns keine Umlaute hat. Bei anderen Sonderzeichen weiss ichs nicht (nicht geprüft) nehme es aber an dass es auch nicht klappt.
 
Und wenn du das hier ausgibst und in phpMyAdmin ausführst geht es?
PHP:
echo 'SELECT * FROM Location WHERE locationname = "'.mysql_real_escape_string($location).'"';

PS: Bitte benutze in Zukunft [code=php] [/code] oder [code=sql] [/code] bzw die Tags die zur jeweiligen Sprache gehören.
 

Neue Beiträge

Zurück