[Funktion] setlocale - Kennt nur DE - Zeichensatz immer UTF-8

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

  • [Funktion] setlocale - Kennt nur DE - Zeichensatz immer UTF-8

    Ich arbeite auf 3 Servern mit setlocale und den folgenden Einstellungen:

    Locale-Parameter: array('de_DE@euro', 'de_DE', 'de', 'ge')
    oder
    Locale-Parameter: array('en')

    Windows
    Sowohl deutsches als auch englisches Datum wird korrekt ausgegeben. Zeichensatz ist ISO-8859-1

    Linuxserver 1 (irgendwo in nem RZ )
    Englisches Datum wird nicht erkannt, musste viele Ländercodes ausprobieren bis er letztendlich en_GB das gewünschte Ergebnis gebracht hat. Zeichensatz ist wieder ISO-8859-1

    Linuxserver 2 (20 cm links von mir)
    Akzeptiert ausschließlich deutsche Locale-Parameter. Sämtliche Varianten von en, eng, EN, en_GB usw. mag er nicht, bei anderen Ländern z.B. Niederlande sieht es auch nicht besser aus.
    Außerdem verwendet er den Zeichensatz UTF-8.
    Per header und meta-Angaben wird jedoch der Zeichensatz ISO-8859-1 angegeben, aber es entstehen trotzdem Zeichensatzfehler.

    Hat jemand Rat?
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

  • #2
    An den Default-Charset im Apache hast du bestimmt gedacht? Daran lag es bei mir mal nach ewiger Suche.
    ich glaube

    Kommentar


    • #3
      Ähm, nicht jeder kann bei seinem Provider an der Apache Config fummeln. Gibt es keine Möglichkeit, das per PHP zu steuern?
      Sunshine CMS
      BannerAdManagement
      Borlabs - because we make IT easier
      Formulargenerator [color=red]Neu![/color]
      Herkunftsstatistik [color=red]Neu![/color]

      Kommentar


      • #4
        Original geschrieben von Benny-one
        Ähm, nicht jeder kann bei seinem Provider an der Apache Config fummeln.
        Die Server von deinem Provider stehen 20 cm neben dir?
        ich glaube

        Kommentar


        • #5
          der nicht, aber es gibt ja durchaus andere Provider
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            locale
            setlocale(LC_TIME, 'de_DE.UTF8'); // note the charset info !

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              ich kann mir schwer vorstellen, dass wenn du die
              header() mit dem richtigem charset sendest, dass der browser es verweigert die Ausgaben in passendem Zeichensatz zu liefern
              (so weit der Zeichensatz vorhanden ist und browser nicht brutal auf ein bestimmter Zeichensatz eingestellt ist).
              Slava
              bituniverse.com

              Kommentar


              • #8
                Tja, das mit den Locales ist unter Linux so ne Sache. Die kann jeder Server-Admin sich so zusammenbasteln, wie er grade lustig ist. Und der Zeichensatz ist Teil der jeweiligen Locale. Und wie das unter Linux so üblich ist, gibt es überhaupt keine Namenskonventionen und die Dinger heißen auf jedem Server anders. Du kannst da halt wirklich nur mehrere durchprobieren. Und du kannst auf dem Server auf der Konsole locale -a ausführen und er zeigt dir alle vorhandenen an. Wenn du viel Glück hast, hat der Server-Admin verständliche Namen vergeben. Du könntest die Liste dann dem User während der Konfiguration ausgeben.
                Im Manual unter setlocale steht einiges dazu und wenn nur UTF-8 Locales vorhanden sind, kannst du ja auch utf8_decode darauf anwenden - aber das darfst du auch nur dann anwenden und sonst nicht, also brauchst du noch einen Wrapper um die Datumsfunktionen... Alles nicht so schön.

                Hier mal die Locales, die auf meinem Webspace definiert sind:
                Code:
                C
                de_AT
                de_AT@euro
                de_AT.iso88591
                de_AT.iso885915@euro
                de_CH
                de_CH.iso88591
                de_DE
                de_DE@euro
                de_DE.iso88591
                de_DE.iso885915@euro
                de_DE.utf8
                deutsch
                el_GR
                el_GR.iso88597
                el_GR.utf8
                en_IE@euro
                en_IE.iso885915@euro
                german
                greek
                POSIX
                hopka.net!

                Kommentar


                • #9
                  Original geschrieben von ghostgambler
                  locale
                  Er arbeitet unter Windows, und gerade bei Windows funktioniert setLocale immer mit problemen, die eigentlich hier
                  http://de.php.net/manual/en/function.setlocale.php
                  aufgelistet sind.
                  Slava
                  bituniverse.com

                  Kommentar


                  • #10
                    Re: [Funktion] setlocale - Kennt nur DE - Zeichensatz immer UTF-8

                    Original geschrieben von Benny-one
                    Außerdem verwendet er den Zeichensatz UTF-8.
                    Per header und meta-Angaben wird jedoch der Zeichensatz ISO-8859-1 angegeben, aber es entstehen trotzdem Zeichensatzfehler.
                    Wieso "trotzdem"?

                    Wenn Sonderzeichen in UTF-8 ausgegeben werden [1], du dem Browser aber vorlügst, sie seinen ISO-irgendwas - dann ist das kein "trotzdem", sondern ein "genau deshalb".



                    [1] Ich nehme mal an, dass du von der Benutzung von strftime o.ä. redest?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      @wahsaga: ja.

                      Fehler auch gefunden: Mein Linuxsystem verfügt nur über UTF-8 Zeichensätze, von daher kann er bei strftime nichts anderes verwenden. Daher der Fehler.
                      Sunshine CMS
                      BannerAdManagement
                      Borlabs - because we make IT easier
                      Formulargenerator [color=red]Neu![/color]
                      Herkunftsstatistik [color=red]Neu![/color]

                      Kommentar

                      Lädt...
                      X