Webseite UTF-8 Charset Formular
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angabe
anhaltspunkt
attribut
browser
code
eintragen
form
formular
funktion
header
http
index
kennen
nehmen
problem
tag
trainer
url
verstehen
vokabel
-
Hallo!
Ich habe eine Webseite die vollständig UTF-8 (Ohne BOM) ist. Darin habe ich ein tag/form">Formular (POST), und wenn ich dieses absende kommen die eingetragenen Werte offenbar in einem anderen Charset an.
So sieht die Seite aus: (Im Notepad++ steht alles auf UTF-8 ohne BOM)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link href='http://fonts.googleapis.com/css?family=Muli' rel='stylesheet' type='text/css'> <title>Vokabel eintragen - evoc</title> <link rel="stylesheet" href="style.css" type="text/css"> <meta name="keywords" content="Vokabel eintragen"> <meta name="description" content=""> <meta name="robots" content="index,follow"> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> </head> <body> <div id="arround"> <div id="menu"><a href="index.php">Home</a> - <a href="index.php?id=list">Vokabelliste</a> - <a href="index.php?id=trainer">Trainer</a> - <a href="index.php?id=insert">Eintragen</a> - <a href="index.php?id=logout">Logout</a> (<a href="index.php?id=user&user=Stefan1">Stefan1</a>)</div> <div id="content"><h1>Vokabel eintragen</h1><p class="info">Trage ein neues Vokabel ein.</p><form action="index.php?id=insert&action=insert" method="post"> <table class="list"> <tr> <td class="hd"><span class="h">Deutsch</span></td> <td class="he"><span class="h">Englisch</span></td> <td class="o"></td> </tr> <tr> <td class="listd"><input name="d" type="text" value="" class="insertd" maxlength="200"></td> <td class="liste"><input name="e" type="text" value="" class="inserte" maxlength="200"></td> <td class="listm"><input name="send" class="formButton" type="submit" value="Eintragen"></td> </tr> </table> </form></div> <div id="footer"></div> </div> </body> </html>
Aus äöüß wird dann äöüÃ�. Also sicher ein Problem beim Charset.
Ich nehme die Werte wie folgt entgegen:
$d = htmlentities(mysqli_real_escape_string($link,$_POST['d']));
Das sollte doch kein Problem sein, oder?
Liebe Grüße
Stefan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sag dem htmlentities, um was für einen charset es sich handelt.
PHP: htmlentities
htmlentities("äöü", NULL, "UTF-8");
-
in den <form>-Tag. Stell auch sicher, dass deine Seite in UTF-8 ausgeliefert wird (header!).accept-charset="UTF-8"
-
Vielen Dank! Ich konnte das Problem nun lösen!
Es lag tatsächlich am htmlentities. Daran habe ich dummerweise nicht gedacht...
Vielen Dank für die Hilfe! -
aklasse schrieb:
und ich denke mal dummerweise:
Es lag tatsächlich am htmlentities. Daran habe ich dummerweise nicht gedacht...
wenn du
explizite angibst, dann brauchst du kein htmlentites. du hast das problem - welches wir noch immer nicht kennen - nicht gelöst, sondern nur umschifft. aber geschmäcke sind bekanntlich anders ;)<meta charset="utf-8">
-
hemiolos schrieb:
aklasse schrieb:
und ich denke mal dummerweise:
Es lag tatsächlich am htmlentities. Daran habe ich dummerweise nicht gedacht...
wenn du
explizite angibst, dann brauchst du kein htmlentites. du hast das problem - welches wir noch immer nicht kennen - nicht gelöst, sondern nur umschifft. aber geschmäcke sind bekanntlich anders ;)<meta charset="utf-8">
Du verstehst offenbar das Problem nicht. Der von dir angegebene Charset Code steht außerdem im Quelltext.
Der Browser sendet das Formular als UTF8 ab nur die Funktion htmlentities erwartet auf meinem Server standardmäßg ein anderes Charset. Daher rührte der Fehler.
Das ist auch der Grund wesswegen es auf lima funktionierte, weil die Funktion htmlentities eine andere Standardkonfiguration hat.
Abgesehen davon ist die angabe von <meta charset="utf-8"> in diesem Fall vollkommen Wirkungslos, da der Browser das Charset das ihm im HEADER angegeben wird nimmt. Nur wenn jemand die Seite mit dem Browser speichern würde, und dann aufmacht, hätte der Browser diese Information nicht und würde vermutlich dieses Attribut als Anhaltspunkt nehmen.
Du musst verstehen, dass der Browser das Charset ja prinzipiell schon kennen muss um diesen tag erst zu verstehen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage