php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.08.2008, 18:20  
Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 55
go1denboy
Standard €- und &-Zeichen Problem bei Speichenr in DB...

Hallo,
ich versuche jetzt seit einigen Stunden €-Zeichen und &-Zeichen in meiner DB abzuspeichern.
Meine Datenbank ist auf utf8_general_ci eingestellt. Mien Header im Script ist auch utf8.

Ich übermittle Meine Daten aus dem Formular mittels AJAX. Umlaute werde korrekt gespeichert.

Wenn ich allerdings ein €- Zeichen speichern will, dann speichert er es nur als "?".
Bei einem &-Zeichen schneidet er einfach den text danach ab. (z.B.: Eingabe: "hallo Test & Hallo Test". Es wir nur "Hallo Test " gespeichert)

Wieso ist das so??
Wie kann ich das € und das & Zeichen in meiner DB speichern???

PS: Habe das Netz schon durchwühlt aber nirgend stand ne wirkliche Lösung. Es wird nur klar, dass anscheinend sehr viele dieses Problem haben.

Danke soweit.
go1denboy ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.08.2008, 18:25  
KeinGrips
Gast
 
Beiträge: n/a
Standard

versuche mal die zeichen & und € zu escapen.
sieht dann so aus \& und \€

bin mir aber auch nicht ganz sicher
  Mit Zitat antworten
Alt 23.08.2008, 18:37  
Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 55
go1denboy
Standard

Escapen funktioniert nicht.
go1denboy ist offline   Mit Zitat antworten
Alt 23.08.2008, 18:53  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich nehme an, das Speichern ist nicht das Problem, sondern die Ausgabe.
Wie stellst Du die Daten aus der DB wieder dar?
David ist offline   Mit Zitat antworten
Alt 23.08.2008, 19:01  
Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 55
go1denboy
Standard

Also ich überprüfe erst einmal was mien Script an die DB übergibt.
Meine Prüfung ergibt, dass di erichtigen Werte sowohl € und & richtig übergeben werden.
In phpmyadmin werden mir die Daten sätze aber schon falsch angezeigt. Also ein "€" wird als "?" gespeichert. Un deine Zeichenkette mit einem "&" drin, wird nach dem "&" einfach abgeschnitten agespeichert.
Deswegen gehe ich mal davon aus, dass es nicht an der ausgabe liegt.

Aber hier meine Ausgabe: ich frage die Daten per SELECT blabla FROM tabelle xyz etc... ab und zeige diese dann dynamisch per php an.

Noch weitere Tips??
go1denboy ist offline   Mit Zitat antworten
Alt 23.08.2008, 19:11  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das hat mir leider nicht die gewünschte Information gebracht. Ich bin interessiert an dem eigentlichen Ausgabecode. Nicht am SELECT, nicht an phpmyadmin, sondern an dem Code der sozusagen zwischen Datenbank und Browser liegt. Von der DB kommen Daten in Form einer Ergebnisresource an. Was tut das Skript mit diesen Daten und was wird an den browser gesendet. Als (Original-)Code bitte.
David ist offline   Mit Zitat antworten
Alt 23.08.2008, 19:22  
Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 55
go1denboy
Standard

Also hier ein Ausschnitt wie mein beschriebenes Problem dargestellt wird:

echo("<td width=\"54%\" class=\"".$zusatz."\" id=\"artikel".$row['ID']."\">".utf8_encode($row['artikel'])."</td>\n\t");

Also:
<td width="54%" class="hell" id="artikel123">In meinen Beiträgen wird das EURO Zeichen falsch dargestellt und das & auch!</td>

Meintest du es so?
go1denboy ist offline   Mit Zitat antworten
Alt 23.08.2008, 19:29  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ok, Du gibst also den unbehandelten Datenbanktext aus.
& ist ein besonderes Zeichen in HTML Code. Damit wird eine sogenannte Entity markiert.
Genauso wie Du für ein <, das ausgeben werden soll &lt; schreibst, muss &amp; für ein &-Zeichen im Code stehen.
Wenn Du die Daten nicht entsprechend behandelst, ist Deine Seite überdies für XSS-Attacken anfällig.
Siehe: htmlentities und htmlspecialchars

Das Euro-Symbol ist vermutlich ein Problem, weil irgendwo auf dem Weg Browser->Datenbank->Brower das Charset/Encoding gewechselt wird.
Welches Charset hast Du für die HTML Seite angebenen? Welches Charset wird für die DB-Verbindung verwendet? Welches Charset ist der Datenbank/Tabelle zugeordnet?
David ist offline   Mit Zitat antworten
Alt 24.08.2008, 01:19  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

SET NAMES utf8 fuer die Datenbank, das steht nun aber auch wirklich IN JEDEM Thread zu Zeichensaetzen.
Chriz ist offline   Mit Zitat antworten
Alt 24.08.2008, 16:54  
Benutzer
 
Registriert seit: 11.06.2008
Beiträge: 55
go1denboy
Standard

Charset:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

Charset DB-Verbindung:
$sql = "UPDATE testen123 SET beschreibung='".addslashes($_GET['beschreibung'])."' WHERE ID='123'";
mysql_query("SET NAMES 'utf8'");
mysql_query($sql);

Charset DB:
DB: utf8_general_ci
tabelle: utf8_general_ci
Spalte der Tabelle: utf8_general_ci


Wenn ich jetzt den Wert € übergebe, dann schreibt er gar kein € zeichen in die DB. Beispiel: Ich gebe "123 Hallo das ist ein € Zeichen." ein. In der DB wird das "123 Hallo das ist ein � Zeichen." gespeichert.
Bei einem & Zeichen malcht er folgendes: Eingabe: "123 Das ist ein & Zeichen.". Er speichert es in der DB als: "123 Das ist ein".

Wo liegt der Fehler??

Danke im Vorraus.
go1denboy ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Benutze Zeichen anzeigen! cokotech Datenbanken 3 06.06.2008 18:24
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
erste 7 zeichen überprüfen aircrash PHP Tipps 2008 1 28.09.2007 09:11
Problem: Zeichen in ganzer Tabelle ersetzen Datenbanken 1 03.12.2005 21:21
[Erledigt] Zeichen ersetzen in einem Dokument PHP Tipps 2007 16 25.11.2005 14:16
dateien ausgeben kein Problem - ABER! dsmcg PHP Tipps 2005-2 9 22.10.2005 19:59
100 zeichen langen key erzeugen PHP Tipps 2005-2 25 16.09.2005 00:49
XML Problem bei Datensätzen mit Sonderzeichen wie "& DonTermi PHP-Fortgeschrittene 2 01.09.2005 12:09
Problem mit &amp; beim XML - Parsen PHP Tipps 2005-2 1 27.08.2005 14:08
[Erledigt] Problem mit Backslash Patrick Schwarz PHP Tipps 2005-2 5 26.07.2005 09:54
[Erledigt] Problem mit User/Group: nobody(99)/99 Server, Hosting und Workstations 3 09.07.2005 15:31
Problem mit preg match() PHP Tipps 2005-2 3 08.07.2005 19:40
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Anzahl von Zeichen ermitteln PHP Tipps 2004 3 20.08.2004 15:56
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
utf8_encode euro, utf8_encode euro zeichen, zeichen für datenbank, datenbank zeichensatz, db zeichen, zeichen datenbank, php utf8_encode euro, php utf8_encode euro zeichen, http://www.php.de/datenbanken/46920-und-zeichen-problem-bei-speichenr-db.html, zeichen db, utf8_encode eurozeichen, zeichensatz datenbank, zeichen für eine datenbank, € zeichen in datenbank, db zeichensatz, utf8_general_ci €-zeichen, sql eurozeichen, &-zeichen wird nicht in datenbank gespeichert, utf8_encode euro-zeichen, php und-zeichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum