Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlautproblem bei POST

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umlautproblem bei POST

    Hallo!

    PHP-Code:
    $inhalt htmlspecialchars($_POST['Inhalt']);

    if(empty(
    $inhalt))
    {
    echo 
    '<center>Leerer Beitrag!<br><a href="">Zurück</a></center>';
    }
    else { .... 
    Der Inhalt, der in einem Formular eingegeben wurde, wird hier über POST gelesen und dann weiterverwertet. Benutze ich keine Umlaute, gibts keine Probleme. Taucht jedoch ein Umlaut oder "ß" auf, wird immer der "Leerer Beitrag!"-Seite ausgegeben.
    Großes Fragezeichen
    MfG, Heraklit

  • #2
    Wie ist die Datei codiert?

    Kommentar


    • #3
      Mehr vom Code wäre eventuell Hilfreicher

      Kommentar


      • #4
        Zitat von Heraklit Beitrag anzeigen
        Der Inhalt, der in einem Formular eingegeben wurde, wird hier über POST gelesen und dann weiterverwertet. Benutze ich keine Umlaute, gibts keine Probleme. Taucht jedoch ein Umlaut oder "ß" auf, wird immer der "Leerer Beitrag!"-Seite ausgegeben.
        Großes Fragezeichen
        MfG, Heraklit
        such mal hier im forum nach UTF8 du findest viele beiträge in denen dann steht, dass SET NAMES utf8 in der DB geschehen soll, php dateien als UTF8 abspeichern im HTML charset UTF8 angeben und dann sollte es keine Probleme mehr geben

        Kommentar


        • #5
          htmlspecialchars
          Folgende Umwandlungen werden vorgenommen:

          '&' (Ampersand/kaufmännisches Und) wird zu '&amp;'.
          '"' (doppeltes Anführungszeichen) wird zu '&quot;', wenn ENT_NOQUOTES nicht gesetzt ist.
          "'" (einfaches Anführungszeichen) wird nur zu ''', wenn ENT_QUOTES gesetzt ist.
          '<' (kleiner als) wird zu '&lt;'
          '>' (größer als) wird zu '&gt;'
          mit htmlentities gehst du gnadenlos auf alles los, ist daher auch etwas langsamer.
          Versuche es mal damit http://us.php.net/manual/de/function.htmlentities.php
          Die Funktion ist komplett identisch zu htmlspecialchars(), allerdings wandelt htmlentities() wirklich alle Zeichen, die eine HTML-Code-Entsprechung haben, in diese Entsprechung um.
          Ich hoffe ich habe dein Problem richtig verstanden

          Kommentar


          • #6
            htmlentities
            ist unnötig. Erst recht für eine empty()-Prüfung.

            Kommentar


            • #7
              Erst einmal danke für eure Hilfe, das geht wirklich schnell hier

              Code:
              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
              Das scheint in der Formular-html gefehlt zu haben, jetzt gibts keine Probleme mehr!
              MfG

              Kommentar


              • #8
                Ds ist Unsinn. Die PHP-Logik kennt keine meta-Tags.

                Kommentar


                • #9
                  Habe die meta-Zeile in den Head-Bereich der Formular-Datei reingeschrieben. Für POST verwende ich dann htmlentities und es klappt. Bei htmlspecialchars komme ich auch in den else-Teil, jedoch werden irgendwelche Hieroglyphen für ä,ö,ü usw. ausgegeben.

                  Kommentar


                  • #10
                    Du solltest anfangen an der Ursache zu arbeiten. Siehe #4.

                    Kommentar


                    • #11
                      Zitat von Dark Guardian Beitrag anzeigen
                      Generell: alles UTF-8. Dann hast du nie Probleme. Als kurze Checkliste:
                      - HTTP Header Content-Type mit UTF-8
                      - PHP und HTML/Template Dateien in "UTF-8 ohne BOM"
                      - Formulardaten in UTF-8 übergeben (ggf. mit accept-charset sicherstellen)
                      - Datenbank Zeichensatz UTF-8, Tabellenkollationen utf8_general_ci o.Ä.
                      - Datenbankverbindung von PHP zu MySQL auf UTF-8 stellen

                      Kommentar


                      • #12
                        OK, danke vielmals, mit den POST-Daten habe ich gar keine Probleme mehr, sondern es kommt alles so an, wie es soll.
                        Ich habe jetzt
                        Code:
                        AddDefaultCharset utf-8
                        in meine httpd.conf Datei des Apache eingefügt, außerdem
                        Code:
                        default_mimetype = "text/html"
                        default_charset = "UTF-8"
                        in der php.ini eingestellt.

                        Jetzt müsste ich ja eigentlich direkt Umlaute in meinem Editor in den html-Code schreiben können, statt &uuml; usw... Aber sowas wie das hier funktioniert nicht:

                        beispiel.php
                        PHP-Code:
                        <?php include('bsp.php'); ?>
                        <html>
                        <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head>
                        <body>öääöäü</body>
                        Statt "öääöäü" kriege ich "??????" ausgegeben.

                        Bei selfhtml steht:

                        Wenn Sie Kodierungen wie ISO 8859-1 oder UTF-8 verwenden, können Sie die deutschen Umlaute direkt in Ihrem Editor eintippen. Sofern Sie die besagte Angabe zur Zeichenkodierung im Kopf der HTML-Datei notieren, können Sie davon ausgehen, dass aktuelle und auch ältere Browser die Datei korrekt verarbeiten.
                        Habe ich irgendwas falsch verstanden?

                        Datenbanken usw. verwende ich nicht (weil es schon mehrmals erwähnt wurde in diesem Faden).

                        Kommentar


                        • #13
                          Es hat sich erledigt, ich hatte vergessen sie im Notepad++ zu UTF8 zu konvertieren.

                          Kommentar


                          • #14
                            Zitat von BlackScorp Beitrag anzeigen
                            such mal hier im forum nach UTF8 du findest viele beiträge in denen dann steht, dass SET NAMES utf8 in der DB geschehen soll, php dateien als UTF8 abspeichern im HTML charset UTF8 angeben und dann sollte es keine Probleme mehr geben
                            PHP kümmert sich nicht um die Metatags, deshalb ist das notwendig.

                            Kommentar

                            Lädt...
                            X