utf-8 kodierung - wo ist der fehler ?
cayaphas
- html
tach,
ich bin gerade am verzweifeln:
Ich habe ein fromular, welches Zeichen UTF8-kodiert verarbeiten soll:
Ich habe zur Kodierung im html-Sourcecode folgende Angaben drin:
....
<?xml version="1.0" encoding="utf-8"?>
...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
<form action="/index.php?id=4072&action=change&change_id=60" id="contact_form" method="post" accept-charset="utf-8" >
...
Das sind doch alle nötigen Angaben um sicher zu gehen, oder?
Jetzt will ich durch ein normales Textfield folgende Zeichen in meine utf8_unicode kolla-ierte MySQL datenbank schreiben.
"äüöÄÜÖßáéàèą"
doch bereits wenn mich mir die $_REQUEST[]-daten anzeigen lasse kommt folgendes raus:
"äüöÃ?Ã?Ã?Ã?áéà èÄ?"
Ich teste mit Firefox2.0 da kanns also auch nicht dran liegen.
Hab ich etwas vergessen, falsch verstanden, oder wo liegt der Fehler?
Das Script läuft unter Typo3 3.8, kann das was damit zu tun haben ?
gruss
caya
Ich habe zur Kodierung im html-Sourcecode folgende Angaben drin:
Das reicht nicht, der alles entscheidende Parameter ist die Content-Type-Angabe im HTTP-Header! Den setzt du in PHP beispielsweise mit der Funktion header(). Oder in der Serverkonfiguration oder der PHP-Konfiguration (Default Content Type).
und nochmal tach ...
ich verzweifle wirklich ...
ich hab alle einstellungen gemacht (werden von firefox auch so angezeigt (header, etc.)), un ich denke ich hab die datenbank-verbindung korrekt gesetzt, etc.
Ich hab jetzt mal direkt unter phpMyAdmin folgende sonderzeichen "äßą" eingesetzt.
Wenn ich diesen wert jetzt aus der datenbank hole und als preset value setze, wird trotzdem nur "äß?" angezeigt.
Wenn ich in IE das encoding ändere (z.B. auf westeuropäisch) erscheint in dem feld die falsch kodierten zeichen "äß?" ...
?? wie schon gesagt, ich bin mittlerweile völlig verstört ... ??
liegt das vielleicht doch an dem encoding der database connection ?
und wenn, wie kann ich das testen?
caya
hi,
abgesehen von Peters Hinweis:
doch bereits wenn mich mir die $_REQUEST[]-daten anzeigen lasse kommt folgendes raus:
"äüöÃ?Ã?Ã?Ã?áéà èÄ?"
Diese Daten, welche jetzt in UTF-8 kodiert vorliegen sollen, hast du natürlich ebenfalls wieder als UTF-8 interpretieren lassen?
gruß,
wahsaga
Diese Daten, welche jetzt in UTF-8 kodiert vorliegen sollen, hast du natürlich ebenfalls wieder als UTF-8 interpretieren lassen?
ok ... jetzt bin ich völlig verwirrt; zum Verständnis:
Textfeld Eingabe: äüöÄÜÖßáéàèą
REQUEST daten geben folgendes aus: äüöÃ?Ã?Ã?Ã?áéà èÄ?
wenn ich diese request daten noch mit php bearbeite, z.B. trim(xyz), und dann in die Datenbank schreibe, sollten sie dann nicht als
äüöÄÜÖßáéàèą in der datenbank stehen? (also zumindest solle ich sie in phpMyAdmin schoon sauber lesen können) ..
lieg ich da falsch ?
oder muss ich die dann nochmals utf8_encoden, damit sie lesbar in der datenbank stehen?
und nochmal tach ...
ok .. ich hab nun verstanden, dass PHP probleme mit uft kodierten variablen hat, also muss ich die daten, bevor ich sie verarbeite ausm request nehmen und ein utf8_decode durchführen, aber:
dadurch mach ich mir die möglichkeit kaputt characters die nicht in ISO-8859-1 drin sind (z.B. das polnische ą) wieder nicht verwenden kann und der ganze unicode nicht hilft ...
lieg ich da richtig?
gruss
caya
ok .. ich hab nun verstanden, dass PHP probleme mit utf-7-kodierten variablen hat,
Nein.
also muss ich die daten, bevor ich sie verarbeite ausm request nehmen und ein utf8_decode durchführen, aber:
Nein. Du musst lediglich, genauso wie die Seite mit dem Formular zur Eingabe auch die Seite, in der Du die Daten wieder ausgibst, als utf-8-kodiert markieren.
Wenn Du dem Browser erzählst, Deine utf-8-kodierten Zeichen wären iso-8859-1-Zeichen, musst Du Dich nicht wundern, dass der Browser Mist ausgibt.
hi,
Textfeld Eingabe: äüöÄÜÖßáéàèą
REQUEST daten geben folgendes aus: äüöÃ?Ã?Ã?Ã?áéà èÄ?
Dann werden sie bei dieser Testausgabe nicht als UTF-8 interpretiert.
wenn ich diese request daten noch mit php bearbeite, z.B. trim(xyz),
Vorsicht, nicht alle Stringfunktionen in PHP sind UTF-8 geeignet.
Ggf. auf die mbstring-Funktionen ausweichen.
und dann in die Datenbank schreibe, sollten sie dann nicht als
äüöÄÜÖßáéàèą in der datenbank stehen?
Ja.
Hast du auch konsequent überall UTF-8 verwendet - also bspw. auch die Verbindung zur Datenbank auf diese Kodierung eingestellt? (SET NAMES zur Laufzeit)
oder muss ich die dann nochmals utf8_encoden, damit sie lesbar in der datenbank stehen?
Nein, doppelt moppeln hält in so einem Falle nicht besser, im Gegenteil.
gruß,
wahsaga
Mahlzeit
utf-8 kodierung - wo ist der fehler ?
»
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hier fehlen gleich zwei Anführungszeichen (").
Gruss
Hello out there!
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hier fehlen gleich zwei Anführungszeichen (").
Ich wüsste nicht, wo die stehen sollten.
See ya up the road,
Gunnar
Hallo,
Ich wüsste nicht, wo die stehen sollten.
Stimmt, war Käse, hab mich verschaut. Ist vielleicht nicht die richtige Uhrzeit gewesen.
Gruss