irc
eByteNet » Forum » Tutorialecke » PHP- & MySQL-Anleitungen » Datenbankproblem...mit ä,ö,ü und ß
Seiten: 1

10.09.2008 um 12:06:00
Virusdesign


Avatar von Virusdesign

Registriert: 19.07.2008
eBN-Alter: 5M 23T

Beiträge: 50
Verwarnungen: 0

eBytes: 163.91

Titel: Datenbankproblem...mit ä,ö,ü und ß
also...ich hab utf-8_unicode_ci auf meiner tabelle bzw. meiner datenbank eingestellt....dennoch werden eingegebene umlaute und das ß als komische kombinationen rausgegeben...was kann ich tun?
_______________________________

Ich kam, sah und blickte nix...

Ich (Deckel) suche Sie (Topf) zum decken!

<-- *lol*
OFF Melden

10.09.2008 um 12:16:42
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 5M 1T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
Wann werden falsche Zeichen dargestellt? PHPMyAdmin? Deine Website?

http://de.selfhtml.org/html/ko[...]eichenkodierung
und für PHP:
header('Content-Type: text/html; charset=utf-8');
http://de.php.net/manual/de/fu[...]tion.header.php

.htaccess:
AddCharset utf-8 .html .php
oder
AddDefaultCharset utf-8

Und noch was: PHP verbindet sich wohl standardmäßig mit latin1 mit dem mysqlserver.
mysql_query("SET NAMES 'utf8'");

Der goldene Weg: keine Umlaute speichern sondern in Entities umwandeln (ä=&auml;)

Eins oder mehreres von obigem sollte Abhilfe schaffen

Helge
Zuletzt bearbeitet von QuasimodosKlon am 10.09.2008 um 12:56:25 Uhr
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

10.09.2008 um 15:19:27
Virusdesign


Avatar von Virusdesign

Registriert: 19.07.2008
eBN-Alter: 5M 23T

Beiträge: 50
Verwarnungen: 0

eBytes: 163.91

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
hmm....hab mir des mal angeschaut und nachgelesen...hat geklappt, nachdem ich meine tabelle "wirklich" auf utf-8 eingestellt hatte und deine goldene regel befolgt hatte^^....ist zwar n bissl mehr schreibarbeit, aber funktioniert hervorragend....danke sehr....hoffe du hinterlässt jetzt einen gb bei mia....

thx nomml Virusdesign
_______________________________

Ich kam, sah und blickte nix...

Ich (Deckel) suche Sie (Topf) zum decken!

<-- *lol*
OFF Melden

10.09.2008 um 15:45:05
Species-8472
Administrator

Avatar von Species-8472

Registriert: 09.09.2006
eBN-Alter: 2J 4M 1T

Beiträge: 300
Verwarnungen: 0

eBytes: 502.14

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
hi,
vorher deine datenbankeintrag durch nen arrya schicken ... alles umlaute sonderzeichen usw. rausfiltern und durch zb. &nbsp; ersetzen. das in die datenbank schreiben und auch auf dem gleichen weg alles wieder raushollen.

mfg Species
_______________________________

OFF Melden

10.09.2008 um 16:46:32
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 5M 1T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
Viel Schreibarbeit ist es gar nicht mal. Hast Du die PHP-Funktion htmlentities angewendet?
http://de.php.net/manual/de/fu[...]tmlentities.php

btw: Grundsätzlich ALLE Daten die von außerhalb kommen und in ein Query eingebaut werden mit mysql_real_escape_string absichern.
Vorher prüfen ob magicquotes aktiviert sind und in dem Fall stripslashes anwenden, damit keine doppelt geslashten Daten in der DB stehen.
http://de.php.net/manual/de/fu[...]cape-string.php

LG Helge
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

.::Werbung::.

11.09.2008 um 10:43:37
Virusdesign


Avatar von Virusdesign

Registriert: 19.07.2008
eBN-Alter: 5M 23T

Beiträge: 50
Verwarnungen: 0

eBytes: 163.91

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
Is...ja alles schön und gut....aber jedesmal, wenn ich so ne Seite öffne, dann sehe ich nur Bahnhof....naja hab eine möglichkeit ausprobiert...sie schien acuh zu funzen, aber heut ist widda doof....naja ich muss noch n bissl recherchen....wenn ichs hab, dann sag ich euch bescheid, ok?...naja danke für die links

mfg Virusdesign

und geschafft....ihr werdet wahrscheinlich lachen aber so hab ichs hinbekommen:

beim posten:

$urlname = str_replace("ä","&auml;",$urlname);
$urlname = str_replace("A","&Auml;",$urlname);
$urlname = str_replace("ö","&ouml;",$urlname);
$urlname = str_replace("Ö","&Ouml;",$urlname);
$urlname = str_replace("ü","&uuml;",$urlname);
$urlname = str_replace("Ü","&Uuml;",$urlname);
$urlname = str_replace("ß","&szlig;",$urlname);

das hab ich mit mehr schreibarbeit gemeint...vllt weis einer ja nen kürzeren code^^
Zuletzt bearbeitet von Virusdesign am 11.09.2008 um 10:55:57 Uhr
_______________________________

Ich kam, sah und blickte nix...

Ich (Deckel) suche Sie (Topf) zum decken!

<-- *lol*
OFF Melden

11.09.2008 um 11:38:44
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 5M 1T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
Naja alle Wege führen nach Rom ;)

$urlname = htmlentities($urlname);

besser:
Code:
if(get_magic_quotes_gpc()) $urlname = stripslashes($urlname); // falls $urlname aus GET/POST
$urlname = htmlentities($urlname);
$urlname = mysql_real_escape_string($urlname);


1) erst prüfen, ob magic quotes aktiviert ist, dann müssen die backslashes entfernt werden
2) alle Umlaute und Sonderzeichen in HTML-Codes wandeln
3) Backslashes MySql-konform wieder einfügen, damit keine Abfragen manipuliert werden können.

Beispiel: Du hast ne Abfrage:
$qry = "SELECT * FROM user WHERE username='$user' AND password='$pwd' "

Dann schicke ich Dir übers Webformular Username: admin, Passwort: ' OR 1=1 --
Ergebnis:
SELECT * FROM user WHERE username='admin' AND password='' OR 1=1 -- '

Mit mysql_real_escape_string kann das nicht passieren.

LG Helge

EDIT:
Nochmal zur Erklärung mit den magic quotes - sonst verstehste wahrscheinlich nur Böhmische Dörfer :mrgreen:
magic quotes ist in PHP normalerweise voreingestellt und bewirkt, daß vor allen ' " und dem Null-Zeichen (nicht die Zahl 0 sondern das Steuerzeichen mit dem Ascii-Code 0) ein Backslash in Daten eingefügt wird, die per GET, POST oder Cookies in PHP eingelesen werden. Dies wird intern mit addslashes erledigt.

mysql_real_escape_string macht genau das gleiche mit einem String, den Du der Funktion übergibts, nur etwas erweitert und genau auf die Datenbankverbindung abgestimmt. Daher müssen die automatisch eingefügten vorher entfernt werden, sonst sind sie mehrfach vorhanden.
Zuletzt bearbeitet von QuasimodosKlon am 11.09.2008 um 12:00:33 Uhr
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

20.11.2008 um 11:38:21
Virusdesign


Avatar von Virusdesign

Registriert: 19.07.2008
eBN-Alter: 5M 23T

Beiträge: 50
Verwarnungen: 0

eBytes: 163.91

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
joa, hoi wie gehts....erstmal danke für eure tipps, auch wenn ich zu doof bin um sie umzusetzen...im endeffekt bin ich bei meiner lösung geblieben -> bevor der text in die datenbank kommt, wird er auf umlaute und ß durchsucht und dann durch den html-code ersetzt (siehe oben)....diese methode scheint mir die einfachste zu sein....die sache mit dem htmlentities hab ich bis heut nich auf die reihe gebracht...auch weil ich keine zeit hatte :q (doofe ausrede aber is so) naja ich lasse erstmal meine lösung, bin n bissl im stress wegen dem studium....
ich hab ne frage an Species-8472 -> also, wie war das mit den arrays? ich hab kein wort verstanden :D ...wie würd den der quellcode dafür ungefähr aussehen?....
ansonsten danke für eure posts ^^ hat mir in soweit geholfen, dass ich meine lösung optimiert hab :q, weil die am anfang ja auch nicht gefunzt hatte :D
ich werd noch einen thread aufmachen, weil ich noch n paar andere fragen zu php hab, die hier abba nich reinpassen :q...mal schaun wann ich dazu komme :) also bis die tage

eurer virus

mfg virusdesign
_______________________________

Ich kam, sah und blickte nix...

Ich (Deckel) suche Sie (Topf) zum decken!

<-- *lol*
OFF Melden

20.11.2008 um 19:33:54
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 5M 1T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Datenbankproblem...mit ä,ö,ü und ß
Ich glaube, mit Arrays würde es noch wesentlich komplizierter werden, als mit den konventionellen Funktionen, da Du ja ganze Zeichenketten bearbeiten möchtest. Gäbe es nur nur einzelne Zeichen, wäre es mit Arrays kein Problem.

Es gibt allerdings suchen-und-ersetzen-Funktionen mit regulären Ausdrücken, die als Parameter auch Arrays annehmen. (mehrere Suchausdrücke, mehrere Ersetzungen)

Für das einfachste, wenn auch nicht die eleganteste/perfekteste Lösung, halte ich die Funktion htmlentities, und das dann in die DB schreiben. Ist zwar unschön, codiert in die DB zu schreiben, da es dann nur gezielt für eine Ausgabeform (HTML) als Datengrundlage vorliegt, aber angesichts der ganzen Encodingproblemen sicher eine einfache und schnelle Lösung.

$urlname = htmlentities($urlname);

Schon hast Du genau, was Du gesucht hast: ä wird zu &auml; usw., also genau das gleiche, wie

$urlname = str_replace("ä","&auml;",$urlname);
$urlname = str_replace("A","&Auml;",$urlname);
$urlname = str_replace("ö","&ouml;",$urlname);
$urlname = str_replace("Ö","&Ouml;",$urlname);
$urlname = str_replace("ü","&uuml;",$urlname);
$urlname = str_replace("Ü","&Uuml;",$urlname);
$urlname = str_replace("ß","&szlig;",$urlname);

nur daß die Funktion noch ein paar weitere HTML-Codes kennt.

LG Helge
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden


eByteNet » Forum » Tutorialecke » PHP- & MySQL-Anleitungen » Datenbankproblem...mit ä,ö,ü und ß
Seiten: 1

Du hast in diesem Forum keine Schreibrechte!

Computer Notdienst in Leipzig | Software Installtionsservice | Computer