Ankündigung

Einklappen
Keine Ankündigung bisher.

Immer diese Umlaute...

Einklappen

Neue Werbung 2019

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

  • Immer diese Umlaute...

    Moin,
    heute morgen und auch heute abend hat mein Code noch Umlaute und ß ausgegeben. Jetzt aber funktioniert das nicht.

    PHP-Code:
    $query_clean utf8_encode(preg_replace("/[^a-zA-Z0-9_äöüÄÖÜß& -]/"""utf8_decode($query))); 
    Woran kann das liegen?

    Ich möchte ß und die Umlaute beibehalten, weil ich die brauche für Namen.


  • #2
    Warum machst du das eigenltich? Die Umlaute und das ß sind doch eigenlithc auch im ISO-8859-1 enthalten, wenn ich nicht irre.

    Ansonsten ... entspricht der Input dem der was die Funktion verlangt?
    data
    Eine ISO-8859-1 -kodierte Zeichenkette.
    Am besten wäre es alles durchgängig auf UFT-8 umstellen, dann hast du keine Probleme. http://php-de.github.io/jumpto/mysql-and-utf8/
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Die Datenbank ist nicht das Problem...
      ich habe heute morgen die Datei im web FTP von all-inkl erstellt. da war die Datei wohl noch auf anderes Formatiert gewesen, bevor ich im Zend damit arbeiten konnte.

      PHP-Code:
      preg_replace("/[^a-zA-Z0-9_äöüÄÖÜß& -]/"""$query

      Kommentar


      • #4
        Okay, das ist jetzt wirklich merkwürdig.


        PHP-Code:
           SELECT *
           
        FROM tabelle
           WHERE name 
        'Müller' 
        Das funktioniert in der Datenbank reibungslos, wenn ich das aber per PHP sende, funktioniert das wieder nicht. MySQL ist in UTF8 so wie alle meine PHP Dateien.

        Kommentar


        • #5
          DB-Verbindung auch? http://phpforum.de/forum/showthread.php?t=217877#MySQL (Edit: Steht auch so ähnlich im php-de.github.io-Link, sehe ich gerade.)

          Kommentar


          • #6
            Lies dir den mal durch, es muss alles(!) utf-8 sein http://php-de.github.io/jumpto/mysql-and-utf8/

            - mysql/mysqli/PDO-Schnittstelle von PHP zur DB (meine Vermutung, was nutzt du denn?)
            - PHP Datei so (UTF-8 ohne BOM) abgespeichert
            - PHP Header (ev. auch default charset in der php.ini oder .htaccess (weiß ich grad nicht auswendig)
            - HTML meta Tag (utf-
            - Wenn es hochkommt im Formular accept-charset
            - Datenbank Tabelle selbst, kann auch je "Feld" separat anders eingestellt sein
            - Datenbank collation

            LG
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Auch die Verbindung ist UTF-8.

              mysqli
              php Datei = check
              php Header = check
              HTML meta = check
              Formular = ich kann Müller in der DB eintragen ohne Probleme
              Datenbank Tabelle = check (utf8_unicode_ci)
              Datenbank Collation = check (utf8_unicode_ci)

              Kommentar


              • #8
                Mach mal vor dem Absenden der Query ein var_dump(bin2hex($_POST['das_feld']));. Wenn das aussieht wie UTF-8, dann können wir den Fehler bis dahin zumindest schon mal ausschließen.

                Kommentar


                • #9
                  string(14) "4dc3bc6c6c6572"

                  Kommentar


                  • #10
                    Ich hab seit gestern auch dieses Problem.

                    Kommentar


                    • #11
                      Zitat von Condor93 Beitrag anzeigen
                      string(14) "4dc3bc6c6c6572"
                      Okay, das sieht richtig aus.

                      Wie setzt du das Charset der Verbindung? Schreibst du da vielleicht "utf-8" statt "utf8"? (Keine Ahnung, ob das klappen würde, btw.)

                      Kommentar


                      • #12
                        Danke! Genau da lag der Fehler...

                        Kommentar


                        • #13
                          if(preg_match('~^[0-9a-zA-ZäöüÄÖÜß_\-\.]{3,20}$~', $name))

                          Vor wenigen Tagen wäre diese Bedingung für den Namen "Müller" noch erfüllt, heute nicht mehr. Wie stell ich eine PHP-Datei auf UTF8 um, falls sowas geht...

                          Kommentar


                          • #14
                            Wie stell ich eine PHP-Datei auf UTF8 um
                            Zitat von hausl Beitrag anzeigen
                            ...
                            - PHP Datei so (UTF-8 ohne BOM) abgespeichert
                            ...
                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              das hab ich nicht verstanden

                              Kommentar

                              Lädt...
                              X