kostenloser Webspace werbefrei: lima-city


Webseite UTF-8 Charset Formular

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Sag dem htmlentities, um was für einen charset es sich handelt.

    PHP: htmlentities

    htmlentities("äöü", NULL, "UTF-8");
  4. aklasse schrieb:
    ... Also sicher ein Problem beim Charset. ...
    nicht offensichtlich! ich habe dein form auf drei servern getestet: auf allen 3 ok! (hier auf lima.)

  5. accept-charset="UTF-8"
    in den <form>-Tag. Stell auch sicher, dass deine Seite in UTF-8 ausgeliefert wird (header!).
  6. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    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!
  7. aklasse schrieb:
    Es lag tatsächlich am htmlentities. Daran habe ich dummerweise nicht gedacht...
    und ich denke mal dummerweise:
    wenn du
    <meta charset="utf-8">
    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 ;)
  8. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    hemiolos schrieb:
    aklasse schrieb:
    Es lag tatsächlich am htmlentities. Daran habe ich dummerweise nicht gedacht...
    und ich denke mal dummerweise:
    wenn du
    <meta charset="utf-8">
    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 ;)


    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.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!