|
|||
Formulardaten und UTF-8 ?
Hallo,
ich komme leider alleine nicht weiter - ich versuche Formulardaten zu übertragen und richtig darzustellen (Sonderzeichen), deshalb versuche ich mit UTF-8 zu arbeiten. Mein PHP ist minimalst, aber ich denke (?), das dies hier nicht das Problem ist. Speichere ich meine Dateien (.html und .php) mit 8-Bit ab ( anstatt mit UTF-8 ) und versehe die HTML-Datei mit <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> gelingt ein "normales" Übertragen der Formulardaten und eine Darstellung (wenigstens) der Umlaute - Ich hätte aber gerne UTF-8 Mein Doctype: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <title>Titel</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> ... # Encoding: Ich speichere die .html mit encoding UTF-8 mit Scite. (kein UTF-8 Cookie) Versuch a) Ich speichere die .php mit encoding UTF-8 mit Scite (kein UTF-8 Cookie) Formulardaten werden nicht übertragen, das verstehe ich überhaupt nicht! Versuch b) Ich speichere die .php mit dem encoding 8-Bit mit Scite Formulardaten werden übertragen: Richtige Ausgabe der Sonderzeichen klappt aber nicht… nicht einmal Umlaute? Müssten diese nicht mit 8-Bit dargestellt werden? # Testeintrag in ein Formularfeld: Sonderzeichentest ä, ö, ü, ß, &, Ä, Ü, Ö, €, @ Formulardatenausgabe (Outlook Express und GMX): Von: tester Email: test@test.de Betreff: UTF-8 Probleme Nachricht: Sonderzeichentest ä, Ã, ü, ß, &, Ä, Ãœ, Ö, â‚, @ # Tipps sind Willkommen! Vielleicht fällt ja jemand sofort mein kapitaler Fehler auf?! Danke |
Sponsored Links |
|
|||
PHP-Code:
__________________
</ulle> |
Sponsored Links |
|
|||
Was ist "8Bit" und inwiefern unterscheidet es sich von UTF-8? UTF-8 ist auch 8Bit-basierend. Daher der Name.
Was ist ein "UTF-8-Cookie"? UTF-8 ist ein Zeichensatz, der kann unmöglich ein Cookie haben. Meinst du ev. das Byte-Order-Mark(BOM)? Was sendet der Server? Ev. ist er auf Latin-1(ISO 8859-1) eingestellt? |
|
|||
Zitat:
Zitat:
Zitat:
@cyberman Wie kann ich denn herausfinden wie "mein" Server encodiert ist? Ich habe ein sogenannten Business 5.0 Packet bei 1&1 (PHP4.3 und 1 MySQL DB) |
|
||||
Zitat:
Zitat:
Mario |
|
|||
Dieser Code muß nicht als UTF-8 gespeichert werden. Die Ausgabe ist trotzdem UTF-8. Sichtbar an der Byte-Länge!
Einfach mal kopieren und probieren. Code:
<? // charset muss entsprechend ==> htmlentities($arg_str,ENT_QUOTES,'UTF-8'); //$str_charset = 'iso-8859-1'; $str_charset = 'utf-8'; header('Content-type: text/html; charset='.$str_charset); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $str_charset?>" /> <title>test</title> <style type="text/css"> <!-- html,body { padding: 0px; margin: 0px; background-color: #FEFEFE; color: #000000; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 100%; } #box{ width: 80%; margin: 5px; border: 1px solid #7D7D7D; padding: 3px; background-color: #E9E9E9; } .boxbreite { margin: 0 0 5px 0; border: 1px solid #7D7D7D; padding: 3px; background-color: #ff9933; font-size: 0.7em; } fieldset, form { margin: 0; padding: 0; border: none; } #textfield{ width: 100%; /* wichtig */ background-color: #ff9933; text-align: center; } #textfield textarea { width: 98%; /* keine 100% wegen border [box-model] */ height: 120px; margin: 0; border: 1px solid #7D7D7D; padding: 3px; color: #000000; background-color: #FFFBF0; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; /* wichtig weil textarea nicht Erbt*/ font-size: 0.8em; overflow: auto; } span { font-size: 0.6em; } --> </style> </head> <body> <div id="box"> <span>accept-charset="<?php echo $str_charset?>" in form-Tag</span> <form action="<?php $_SERVER["PHP_SELF"]?>" method="post" accept-charset="<?php echo $str_charset?>"> <div id="textfield"> <textarea cols="50" rows="20" name="text"><?php echo $_REQUEST["text"];?></textarea> </div> <fieldset> <input type="submit" name="submit_name" /> </fieldset> </form> <span>Byte: <?php echo strlen($_REQUEST["text"]);?> </span> <span>$_REQUEST[] from BROWSER</span> <div class="boxbreite"><?php echo $_REQUEST["text"]; ?></div> </div> </body></html>
__________________
</ulle> |
|
||||
In dem 1. Beispiel werden die Daten (im UTF-8 Format) via Email übertragen. Damit das klappt, musst du entweder die Daten umwandeln (utf8_decode) oder einen entsprechenden Header angeben:
Code:
$extheader = "From: $absender\n" // Nötige HEADER-Angaben ."Content-Type: text/plain; charset=\"utf-8\"\n" ."Content-Transfer-Encoding: 8bit\n" mail($name, $titel, $nachricht, $extheader);
__________________
“My software never has bugs. It just develops random features ...” » DevShack - die Website des freien Webentwicklers Boris Bojic |
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Formulardaten Speichern | GrinziA | Serveradministration und serverseitige Scripte | 9 | 13.11.2012 17:59 |
Formulardaten verstecken | Megabiker | (X)HTML | 3 | 18.02.2011 11:44 |
Formulardaten in Datenbank speicher | kaspam | Serveradministration und serverseitige Scripte | 9 | 07.02.2011 19:36 |
Ajax - Php: Alle Formulardaten trotz Tabs speichern | HaraldMenza | Javascript & Ajax | 0 | 18.12.2008 13:34 |
XHTML Formulardaten in XML speichern | skribi | (X)HTML | 4 | 04.07.2005 12:03 |