Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Encoding nach Update auf PHP 8

Einklappen

Neue Werbung 2019

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

  • Problem mit Encoding nach Update auf PHP 8

    Hi,

    ich habe bei Strato einen Webspace auf PHP 8 umgestellt (da es für 7.x in Zukunft nur noch kostenpflichtigen extended Support gibt). Nun sind da aber diverse Zeichen wie z.B. die deutschen Umlaute kaputt (siehe Beispiel und Screen). Strato meinte, das wäre mein Problem. Hab noch phpMyAdmin in der neusten Version drauf und da ist das gleiche Problem. Hat jemand eine Idee? Schaut mir aus, als wäre

    Beispiel:

    Eine der ältesten Bergbausagen ist die über die „Alte Mordgrube“.




  • #2
    Häufige Ursachen für Kodierungsprobleme sind:

    - Falsch (oder gar nicht) gesetzte Kodierung bei der Datenbankverbindung
    - Falsch (oder gar nicht) gesetzte Kodierung im HTTP-Header bei der Ausgabe.
    - Mit der falschen Kodierung gespeicherte HTML- oder PHP-Dateien.

    Kommentar


    • #3
      Wie konnte es dann vor der Umstellung auf PHP 8 funktionieren und warum ist es auch in phpMyAdmin kaputt. Bei letzterem sollte man ja davon ausgehen, dass die genannten Ursachen nicht das Problem sind.

      Kommentar


      • #4
        Zitat von piekru Beitrag anzeigen
        Wie konnte es dann vor der Umstellung auf PHP 8 funktionieren
        Glück. Manchmal "funktioniert" auch fehlerhafter Code. Dann reicht es oft dass sich eine Servereinstellung oder eine Programmversion ändert, und das Glück verlässt einen.

        Besser also fehlerfreien Code schreiben, dann funktioniert dieser auch immer und überall.

        Zitat von piekru Beitrag anzeigen
        und warum ist es auch in phpMyAdmin kaputt.
        Weil die PHP-Anwendung die Daten vermutlich schon kaputt in die Datenbank geschrieben hat.

        Zitat von piekru Beitrag anzeigen
        Bei letzterem sollte man ja davon ausgehen, dass die genannten Ursachen nicht das Problem sind.
        Doch, genau das sind die typischen Ursachen.

        Kommentar


        • #5
          Ich hatte gleiches Problem und heute wie folgt gelöst:

          Im php-Script für das select, decodiere ich die Strings nunmehr wie folgt:

          printf("%d;%s;%s;%d;%s;%d;%d\n", $row[0], utf8_decode($row[1]), utf8_decode($row[2]), $row[3], date_format($mydate, 'd.m.Y'), $row[5], $ro[6]);

          Beim insert habe ich früher den an der Oberfläche eingegebene Wert programmseitig im Client zunächst mit HtmlEncode umgewandelt und dann an mein php-Script auf dem Server übergeben. Das konnte ich rausnehmen. Ich übergebe also den String so wie er im Client eingeben ohne Konvertierung an php.

          Danach hat alles wieder funktioniert.


          Kommentar


          • #6
            Statt Zeichenkodierungen herumzukonvertieren wäre es sinnvoller überall die gleiche Zeichenkodierung zu verwenden. utf8_decode() konvertiert UTF-8 nach ISO-8859-1, was sehr alt ist und nur eine sehr begrenzte Anzahl an Zeichen enthält. Es ist so alt, dass es ist nicht mal das €-Zeichen enthält.

            Kommentar


            • #7
              Statt hier den Neumalklugen zu spielen, wäre es mal angebracht dem User zu helfen. Deine Antworten bisher waren ja nicht gerade zu angetan, dem User weiterzuhelfen.

              Kommentar


              • #8
                Ich habe in #2 die häufigsten Ursachen für das Problem genannt. Bis jetzt kam keine Antwort, was davon überprüft wurde. Was soll ich bitte machen? Soll ich persönlich hinfahren und ihn dazu zwingen das zu machen? Manche Leute haben echt komische Vorstellungen.

                Wenn jemand nicht will, dann will er nicht.

                Kommentar


                • #9
                  Alter, der Kollege hat doch geschrieben, dass er von PHP 7 auf 8 umstellen musste. Und da sind Probleme mit Umlauten hinlänglich bekannt. Da Strato in der basic-Version leider nur einen rudimentären Zugriff auf die Einstellung von php erlaubt, ist mir leider nichts besseres eingefallen, als die Zeichenketten von Hand zu decodieren. € funktioniert nicht, da hast Du Recht, brauche ich aber auch nicht. Wenn Du eine bessere Idee hast, wir sind ganz Ohr.

                  Kommentar


                  • #10
                    Zitat von magicmeier Beitrag anzeigen
                    Alter, der Kollege hat doch geschrieben, dass er von PHP 7 auf 8 umstellen musste. Und da sind Probleme mit Umlauten hinlänglich bekannt. Da Strato in der basic-Version leider nur einen rudimentären Zugriff auf die Einstellung von php erlaubt, ist mir leider nichts besseres eingefallen, als die Zeichenketten von Hand zu decodieren. € funktioniert nicht, da hast Du Recht, brauche ich aber auch nicht. Wenn Du eine bessere Idee hast, wir sind ganz Ohr.
                    Ich habe eine bessere Idee, lies Punkt #2, da stehen die häufigsten Ursachen von Kodierungsproblemen drin. Da gilt für PHP 7 genauso wie für PHP 8.

                    Und nein, man muss keine Einstellungen von PHP ändern, damit UTF-8 funktioniert. Weder in PHP 7 noch in PHP 8. Man muss einfach nur korrekten Code schreiben.

                    Kommentar


                    • #11
                      € beim Insert funktioniert natürlich. Nur halt beim Select nicht.

                      Kommentar


                      • #12
                        Zitat von hellbringer Beitrag anzeigen

                        Ich habe eine bessere Idee
                        Deine Ideen sind halt Mist. Und tschüß.

                        Kommentar


                        • #13
                          Zitat von magicmeier Beitrag anzeigen
                          Deine Ideen sind halt Mist. Und tschüß.
                          Troll. Wenn man selber seine Unfähigkeit so zur Schau stellt, sollte man vielleicht nicht so große Töne spucken.

                          Kommentar


                          • #14
                            Wo issn das Problem?
                            Das lässt sich doch mit MySQL Funktionen locker wieder herstellen...

                            Kommentar


                            • #15
                              Zitat von magicmeier Beitrag anzeigen
                              Statt hier den Neumalklugen zu spielen,
                              klassisches method acting scheint mir


                              Kommentar

                              Lädt...
                              X