Portal > Foren > PHP > PHP-Programmierung > UTF-8 Daten per Form in DB speichern - keine Umlaute möglich
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 22.06.2007, 11:28 Nach oben    #1
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard UTF-8 Daten per Form in DB speichern - keine Umlaute möglich

Hallo,

ich habe ein Projekt von Latin1 bzw. ISO-8859-1 auf UTF-8 umgestellt. Dabei habe ich darauf geachtet, die Dateien als UTF-8 zu speichern, als auch die die Templates im Dateikopf mittels <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> auszuliefern.

Meine Datenbank, MySQL 5.0.38, legt alle Datensätze in UTF-8 ab.

Die Ausgabe der bereits vorhandenen Datensätze, welche schon immer dort als UTF-8 Datensätze gespeichert wurden, wird wunderbar ausgegeben. Lediglich der Input neuer Datensätze mittels Forumlaren, liefert Steuerzeichen statt der gewünschten Umlaute.

Im Moment bin ich mit meinem Latein am Ende ... sollten noch wichtige Infos fehlen, dann leifer ich alles nach was der Problemlösung dienlich sein könnte.

Besten Dank und Gruß,
Marcus

EDIT:
die verwendete PHP Version ist: 5.2.2-0.dotdeb.1
die HTML Dateien werden als XHTML 1.0 Transistional ausgeliefert
__________________
MfG

Geändert von derMaggus (22.06.2007 um 11:31 Uhr)
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 11:36 Nach oben    #2
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

Hi,

eventuell ein workaround in deinem Script, welcher automatisch
auf alle GET,POST ein htmlentities anwendet ?

gruss
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); 
J33d3X ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 11:59 Nach oben    #3
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard

nicht wirklich, daran dachte ich aber auch schon. Die Daten werden "ungefiltert" in die Datenbank geschrieben. Sie werden zwar behandelt, aber htmlentities oder andere Stringumwandelfunktionen werden nicht verwendet.

UTF-8 geht rein, welches ich auch mittels mb_string_encoding verifiziert habe.

Ein Update auf die aktuelle PHP Version 5.2.3.dotdeb brachte bisher auch keine Veränderung.
__________________
MfG
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 12:17 Nach oben    #4
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Auch, wenn es jetzt nicht ganz zur eigentlichen Fragestellung passt, schau dir eventuell mal das hier an:
herausfinden, ob eine Zeichenkette utf8-kodiert ist

Nur um sicherzugehen, dass das hier
Zitat:
Zitat von derMaggus Beitrag anzeigen
UTF-8 geht rein, welches ich auch mittels mb_string_encoding verifiziert habe.
auch wirklich stimmt!
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 13:37 Nach oben    #5
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

hast du getestet in wieweit dir ein:
"<form accept-charset="utf-8"></form>"
weiterhilft ?

da es für mich eher unwahrscheinlich klingt das es ein
php problem ist

gruss
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); 

Geändert von J33d3X (22.06.2007 um 13:39 Uhr)
J33d3X ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 14:08 Nach oben    #6
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.208
Standard

Zitat:
Zitat von derMaggus Beitrag anzeigen
ich habe ein Projekt von Latin1 bzw. ISO-8859-1 auf UTF-8 umgestellt. Dabei habe ich darauf geachtet, die Dateien als UTF-8 zu speichern, als auch die die Templates im Dateikopf mittels <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> auszuliefern.
sendest du auch einen passenden Content-Type-Header ?
wenn ud ne URL rausrückst kann man das gerne mal überprüfen, weil der Meta-Kram alleine bringt so gut wie nichts.


mfg
robo47
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 14:19 Nach oben    #7
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard

<form accept-charset="UTF-8" ...> wurde auch schon getestet- erfolglos.

URL: http://www.sallys.net/

EDIT:

habe soeben meine REQUESTs mit utf8_decode korrekt in die Datenbank eintragen können ... war darin wirklich das Problem zu suchen? Klingt wie ein Anfänger, ich weiß, aber ... nu ja
__________________
MfG
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 14:23 Nach oben    #8
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.208
Standard

Versuch mal als erstes Query das hier absetzen:

SET NAMES 'utf8'

das sollte für die komplette Datenbank-Verbindung gelten bis sie geschlossen wird.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 14:25 Nach oben    #9
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Schien mir nun so, als ob das Problem gelöst werden konnte.
Zitat:
Zitat von derMaggus Beitrag anzeigen
habe soeben meine REQUESTs mit utf8_decode korrekt in die Datenbank eintragen können
Inwiefern wäre denn deine Variante @robo performancelastiger? Schätze jetzt eher vernachlässigbar, oder?
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 14:30 Nach oben    #10
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.208
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Schien mir nun so, als ob das Problem gelöst werden konnte.
Zitat:
Zitat von derMaggus Beitrag anzeigen
habe soeben meine REQUESTs mit utf8_decode korrekt in die Datenbank eintragen können
Inwiefern wäre denn deine Variante @robo performancelastiger? Schätze jetzt eher vernachlässigbar, oder?
Wenn ich mich nicht irre hat WAQ mir irgendwann mal irgendwo (phpfriend-forum) geschrieben dass utf8_encode/decode nicht wirklich das wahre als Lösung von UTF-8 Problemen sind, das hab ich irgendwo noch so im hinterkopf.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 15:09 Nach oben    #11
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard

Also ... habe nun das Problem mittels utf8_decode löschen können.

Interessant dabei ist, jegliche Einstellung in der php.ini an Stelle mb.http_input, blieb ausser Funktion. Auch die Eingabe des accept-charset im <form... war ohne Ergebnis.

Erst die weitere Bearbeitung mittels uft8_decode, welches ja einen ISO-8859-1 String in UTF8 wandelt, liefert das gewünsche Ergebnis.

... alles sehr seltsam. Aber ich bin nun froh alles gelöst zu haben ... FEIERABEND! *g*
__________________
MfG
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 15:14 Nach oben    #12
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 306
Standard

Zitat:
Zitat von derMaggus Beitrag anzeigen
Erst die weitere Bearbeitung mittels uft8_decode, welches ja einen ISO-8859-1 String in UTF8 wandelt, liefert das gewünsche Ergebnis.
Nein...
Zitat:
This function decodes data, assumed to be UTF-8 encoded, to ISO-8859-1.
Also UTF-8 -> ISO-8859-1
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.06.2007, 19:13 Nach oben    #13
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard

"gut" ... oder auch nicht. Im Moment jedenfalls, ist das die beste Lösung. Lasse ich die Strings ungefiltert in die Datenbank, erscheinen Zeichen wie öl ... diese lassen sich dann auch nicht wieder entschlüsseln, es sei denn, ich stelle das Charset der Site wieder zurück auf ISO-8859-1.
__________________
MfG
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.06.2007, 12:49 Nach oben    #14
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard

Ich muss mich nun doch noch mal zu Wort melden.

utf8_encode() konvertiert meinen String aus der DB in UTF-8, obwohl dieser ja aus der Datenbank als UTF-8 gelesen wird; so die Theorie.

Ich habe mal eine kleine Testdatei erstellt ... vielleicht hat ja noch jemand anderes Lust sich damit zu beschäftigen. Ich bin mit meinem Latein so langsam am Ende.
Angehängte Dateien
Dateityp: zip utf8_Testszenario.zip (2,1 KB, 0x aufgerufen)
__________________
MfG
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.06.2007, 13:00 Nach oben    #15
Gruppenlos
 
Benutzerbild von derMaggus
 
Registriert seit: 24.08.2005
Beiträge: 26
Standard

Ich mag selbst keine Doppel- und Dreifachpostst aber ...

ich habe das Problem gefunden!

Bei der Verbindung mit der Datenbank ist auch das setzten des Charsets für die Verbindung selbst von großer Bedeutung.

Ein mysql_query("SET NAMES 'utf8'"); tut genau dieses und et voila, die Daten werden fehlerfrei ausgeliefert.

Habe mal noch meine modifizierte Datei angehangen.

Vielen Dank dennoch!

EDIT:
möchte auch robo noch mal für seinen Tipp danken, auch wenn ich leider erst jetzt dazu kam ihn mal zu probieren ... am Freitag brannte ein wenig die Luft, da ging das leider unter.
Angehängte Dateien
Dateityp: zip utf8_Testszenario_v1.1.zip (2,1 KB, 0x aufgerufen)
__________________
MfG
derMaggus ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hardware-RAID-Lösung robo47 Plauderecke 29 26.12.2007 04:49
Daten aus dem selben Feld im Array speichern julien Datenbanken 10 08.06.2006 21:39
post Daten weiter leiten als "POST" per header(&qu schifti PHP-Programmierung 12 22.03.2005 15:42
[PHP] Daten per Session übergeben Ben Tutorials 0 14.12.2004 14:34
[PHP] Wie übergebe ich Daten per URL? Ben Tutorials 0 05.12.2004 14:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45