Jörg: Umlautproblem nach Umzug auf neuen Rechner (XAMPP / php / Browser)

Hallo,

nachdem ich ein neues XAMPP auf meinem neuen Rechner einstalliert habe, habe ich in einer Software (php/html/js) ein Umlautproblem.

Dasselbe Script hatte sowohl auf meinem alten Rechner als auch im Produktivbetrieb dieses Umlautproblem nicht.

In der DB sind die Umlaute korrekt dargestellt gespeichert.

Wenn ich mienen Browser unter "Ansicht-Textcodierung" auf "westlich" umstelle, werden die Umlaute korrekt dargestellt.

Im HTML steht

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

Kann es sein, dass ich im neuen XAMPP eine Einstellung vergessen habe, die hiermit zu tun hat?

Jörg

  1. Hallo Jörg,

    nachdem ich ein neues XAMPP auf meinem neuen Rechner einstalliert habe, habe ich in einer Software (php/html/js) ein Umlautproblem.

    ?

    Im HTML steht

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

    Das wäre noch die alte Schreibweise:

    <!-- HTML5 --> <meta charset="utf-8">
    <!-- HTML 4.x --> <meta http-equiv="content-type" content="text/html; charset=utf-8">

    Probier mal die Neue aus, und vielleicht irgendwann dann auch´besser mal UTF-8 umstellen.

    Kann es sein, dass ich im neuen XAMPP eine Einstellung vergessen habe, die hiermit zu tun hat?

    Da gibts ja nicht wirklich was zum einstellen, aber wundert tut mich das schon wenn Browser, PC ansonsten alles gleich geblieben ist.

    Gruss
    Henry

    --
    Meine Meinung zu DSGVO & Co:
    „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
    1. Hallo Henry,

      Das wäre noch die alte Schreibweise:

      <!-- HTML5 --> <meta charset="utf-8">
      <!-- HTML 4.x --> <meta http-equiv="content-type" content="text/html; charset=utf-8">

      Probier mal die Neue aus

      Werde ich in jedem Fall umstellen.

      Da gibts ja nicht wirklich was zum einstellen, aber wundert tut mich das schon wenn Browser, PC ansonsten alles gleich geblieben ist.

      Eben nicht. PC und XAMPP sind neu.

      Jörg

      1. Hallo Jörg,

        Eben nicht. PC und XAMPP sind neu.

        Ach so. Ich habe mal nachgeschaut, was das sein könnte und Rolf scheint da schon den richtigen Ansatz zu haben.

        https://support.mozilla.org/en-US/questions/908856#answer-293816

        Könnte aber dennoch auch andere Gründe haben. Ich zb. hatte emal das gleiche Problem aber umgekehrt, wollte UTF8 darstellen kam aber nur ISO raus. Nach langem Suchen stellte ich fest, dass die Dateien nicht als UTF8 abgespeichert waren. Daher, vielleicht ne blöde Frage, sind deine als UTF8 abgespeichert?

        Andere Dinge sind natürlich auch Scripte die vielleicht ein Shadow-Dom kreieren oder sonstwie den Browser zum umdenken verleiten. Da hilft dann vielleicht eingebunden Scripts ein charset zuzuweisen.

        Wenn du mit der Xampp-Konfiguration rumspielen möchtest, wäre vielleicht hilfreich die portable-Version(nehme ich sowieso per default, weil praktisch) zu nehmen. Da kannst du soviel ändern und machen was du willst und wenn du dich dabei verrennst einfach den gesamten Order per Copy-Paste immer resetten.

        Gruss
        Henry

        --
        Meine Meinung zu DSGVO & Co:
        „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
  2. Hallo Jörg,

    mit dieser Angabe teilst Du dem Browser mit, dass dein Dokument in "westlichem" Encoding ausgeliefert wird. Eine manuelle Einstellung des Encodings im Browser sollte dann nicht erforderlich sein.

    Wenn der Browser es dennoch anders darstellt, spricht das dafür, dass dein Webserver einen Content-Type Header mit einer anderen Angabe setzt. Die Angabe im HTTP Header hat Vorrang vor einer meta charset Angabe.

    Die Neuinstallation kann genau das produziert haben; schau in die Config-Files des Apache (die zentrale httpd.conf, ggf. weitere Dateien die von dort inkludiert werden, und natürlich auch eventuelle .htaccess Dateien in deinem Web-Order)

    Was tun? Entweder die Apache-Konfiguration ändern, oder die komplette Application so umbauen, dass sie ihre Daten UTF-8 codiert liefert. Dazu gehört auch das recodieren der Datenbank.

    Deine PHP Sourcen und alle verwendeten Textdateien müsstest Du in UTF-8 umcodieren. Und Du musst jede String-Operation darauf überprüfen, ob sie von den klassischen PHP Stringfunktionen erledigt werden kann oder ob Du auf die mb_... Stringfunktion umstellen musst. Das ist viel Arbeit, aber dafür läufst Du dann auch nicht Gefahr, dass sich jemand bei Dir beschwert, dass Du seine Eingaben falsch speichern würdest (weil sie in ISO-8859-1 nicht dargestellt werden können).

    Ob das für ein Altprojekt überhaupt machbar ist, kann ich Dir nicht sagen. Es kostet viel Arbeit, wovon das meiste langweiliges Überprüfen des Codes ist, gefolgt von noch langweiligerem Testen, und bringt wenig ein.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      Wenn der Browser es dennoch anders darstellt, spricht das dafür, dass dein Webserver einen Content-Type Header mit einer anderen Angabe setzt. Die Angabe im HTTP Header hat Vorrang vor einer meta charset Angabe.

      Die Neuinstallation kann genau das produziert haben; schau in die Config-Files des Apache (die zentrale httpd.conf, ggf. weitere Dateien die von dort inkludiert werden, und natürlich auch eventuelle .htaccess Dateien in deinem Web-Order)

      Das ist ein guter Ansatz. Und ich meine auch, dass ich sowas schonmal hatte und hier tatsächlich der Apache hier der "Schuldige" war.

      Könnte also sein, dass Du moir hier gut weiter geholfen hast.

      Umcodieren kommt nicht in Frage, weil ich eine Klasse benutze, die utf-8 nicht mag 😟

      Jörg

      1. Lieber Jörg,

        Umcodieren kommt nicht in Frage, weil ich eine Klasse benutze, die utf-8 nicht mag 😟

        aha... Was ist das denn für eine Klasse? Und kannst Du ihr nicht UTF-8 beibringen?

        Liebe Grüße

        Felix Riesterer

        1. Umcodieren kommt nicht in Frage, weil ich eine Klasse benutze, die utf-8 nicht mag 😟

          aha... Was ist das denn für eine Klasse? Und kannst Du ihr nicht UTF-8 beibringen?

          Hi Felix,

          fpdf und doch, da gibt es inzwischen Alternativen sowie Workarounds. Aber bei der Menge an Scripten, die ich dann ummodeln müsste, lass ichs lieber. Neuere Anwendungen entwickel ich in UTF-8, aber diese Anwendung bleibt so, wie sie ist.

          Und selbst ohne die Menge an umzumodelnden Scripten wäre es ein Berg Arbeit sein, alles auf UTF-8 umzumodeln (siehe auch Rolfs Beitrag)

          Jörg

          1. Lieber Jörg,

            fpdf

            da war ich auch mal. Habe mir dann die Mühe gemacht zu tcpdf zu wechseln. Nie mehr non-UTF8. Das war es mir echt wert.

            Und selbst ohne die Menge an umzumodelnden Scripten wäre es ein Berg Arbeit sein, alles auf UTF-8 umzumodeln (siehe auch Rolfs Beitrag)

            Zitat #2504

            Liebe Grüße

            Felix Riesterer

    2. Hallo Rolf,

      Wenn der Browser es dennoch anders darstellt, spricht das dafür, dass dein Webserver einen Content-Type Header mit einer anderen Angabe setzt. Die Angabe im HTTP Header hat Vorrang vor einer meta charset Angabe.

      Die httpd.conf war nicht der "Schuldige". Irgendwann hat mal php das in seine Konfig aufgenommen, daran liegt es.

      php.ini

      ; PHP's default character set is set to UTF-8.
      ; http://php.net/default-charset
      default_charset = "ISO8859-1"
      

      Jetzt läufts auch mit den Umlauten, danke für den Denkanstoss.

      Jörg