Bildergallerie - Probs mit Umlauten

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

  • Bildergallerie - Probs mit Umlauten

    Hi Leute!

    Ich habe folgendes Problem: Ich hab mir eine Bildergallerie gemacht, die nun auch Bilder bzw. Verzeichnisse enthält, deren Namen Umlaute enthalten, z.B. "Süden".

    Nun bin ich darauf gestoßen, dass nur im IE die Bilder nicht angezeigt werden - Netscape & Firefox schlucken das problemlos. Mein Bild wird so aufgerufen:

    Code:
    <img border="0" src="galleries/Süden/thumb/thumb_Süden 1.jpg">
    Ich arbeite zwar mit urlencode(), allerdings nur dort, wo Verzeichnisnamen über die URL (GET) übergeben werden, aber das ist ja nicht der Fall.

    Auch urlencode() auf die Gallerieseite selbst anzuwenden funktioniert nicht so, wie ich möchte, da dann die Verzeichnisse auch einen urlencodeten Namen enthalten müssten, was mir ehrlich gesagt zu umständlich ist, da die Gallerie völlig dynamisch ist und ich nicht jedes Verzeichnis einzeln umbenennen möchte...

    Habe ihr da eine Lösung? IE-User auszuschließen ist auch nicht in meinem Sinn

    Danke, Lukas

  • #2
    huhus..

    das ist ein kleines Problem mit den Charsets und dem urlencoding im IE.

    ich habe das problem mit dem umweg über eine Fehlerseite lösen können (ist zwar nicht sehr elegant, aber es funktioniert...)

    in die .htaccess kommt zum beispiel folgendes:

    ErrorDocument 404 /umlautumleiten.php

    dann brauchst du die datei umlautumleiten.php wie folgt:
    PHP-Code:
      $test='.'.trim(iconv('utf-8','iso-8859-1',urldecode($_SERVER['REQUEST_URI'])));
      require(
    $test); 
    das funktioniert mit php oder html dateien zumindest auf meiner kiste...

    für deinen fall müsstest du dann nicht require verwenden, sondern je nachdem ImageCreateFromJPEG oder sowas...

    wie die daruf reagieren weiß ich nicht...

    spiel einfach mal ein wenig mit verschiedenen charsets und probiere aus $_SERVER['REQUEST_URI'] nen dateinamen zu basteln, den er versteht.

    Da du die query vom IE selbst nicht ändern kannst, bleibt nur dieser Umweg. Bis es funktioniert dürfte allerdings noch ne ganz schöne bastelpackung sein..

    viel Spaß dabei ;-)

    greetz, high
    Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
    When everything else fails, manipulate the data...
    Beschriftungen / Großformatdruck / Werbemittel

    Kommentar


    • #3
      Re: Bildergallerie - Probs mit Umlauten

      Original geschrieben von skalu

      <img border="0" src="galleries/Süden/thumb/thumb_Süden 1.jpg">

      Ich arbeite zwar mit urlencode(), allerdings nur dort, wo Verzeichnisnamen über die URL (GET) übergeben werden, aber das ist ja nicht der Fall.
      Also method=SRC beziehungsweise method=IMG ?

      EDIT:
      habe das quote verbessert.
      Zuletzt geändert von mäander_; 09.07.2006, 09:59.

      Kommentar


      • #4
        @highrise

        Also in den Meta-Tags meiner index.php habe ich folgenden Eintrag:

        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

        Was tut der Code, den du gepostet hast eigentlich genau? Konvertiert der den Zeichensatz von utf-8 in iso-8859-1?

        @mäander_

        Sorry, ich verstehe deine Frage nicht ganz. Ich übergebe den Verzeichnisnamen und den Dateinamen für ein PopUp und dafür verwende ich dann urlencode() bei der Quelle (also der Gallerie mit dem Thumbs) und urldecode() dann im Popup. Ansonsten übergebe ich halt den Verzeichnisnamen für die Gallerie in einer Seitenvariable, also:

        index.php?gallery=Süden

        Danke, Greetz Lukas

        Kommentar


        • #5
          jepp.... tut er...

          however.. unter umständen ist das gar nicht nötig. kommt drauf an, was für ein host system etc...

          das problem ist, dass der IE bei umlauten diese im dateinamen urlencoded sendet. Dann sieht es so aus, dass eine datei, die einen umlaut oder sonstige sonderzeichen enthält einfach nicht gefunden wird, weil der webserver nach eine datei C%21%blablub... (eben urlencoded) sucht und diese nicht finden kann...

          der ausweg aus der misere ist, dass mann entweder die dateien tatsächlich so seltsam benennt (was natürlich beim normalen hinsehen ziemlich behindert aussieht, oder aber irgendwie den server dazu bringt, die anfrage so richtig zu verstehen, wie der IE sie falsch sendet.

          insofern kann man z.B. hingehen und eine fehlerseite ausliefern, die nichts anderes tut, als die übergebene query auswertet und letztendlich doch das "originaldokument" was ja angeblich nicht existiert ausliefert.

          by the way... wie die Apache rewrite-engine (mod rewrite) auf IE-umlaute reagiert, haab ich noch nicht raus... im prinzip könnte man, falls verfügbar auch dort noch nach suchmuster auf die richtigen dateien umleiten..

          greetz, high
          Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
          When everything else fails, manipulate the data...
          Beschriftungen / Großformatdruck / Werbemittel

          Kommentar


          • #6
            @highrise

            Hmm, sorry - ich versteh noch nicht ganz, wieso da eine Fehlerseite nötig ist. Kann man diese Umwandlung nicht prinzipiell vollziehen?

            Ich kenn mich da überhaupt nicht aus - entschuldige also meine "blöden" Fragen

            Danke, Lukas

            Kommentar


            • #7
              das problem ist, dass der IE bei dateien mit umlauten probleme hat, weil er seine anfrage "falsch" formuliert... stell dir vor, du willst das bild "tüte.jpg" anzeigen in deriner HP, aber der IE fragt ständig nach "tuete.jpg" (ganz so ist es nun nicht, aber so ähnlich... zum verständnis ist es glaub ich so einfacher)... jetzt brauchen wir einen weg, dem apachen beizubringen "Hey, der depp, der da ne tuete will, der meint das gar nicht so"...
              der apache weiß das näml. nicht und schaut wie angefragt nach tuete.jpg und sagt "sorry.. hab ich nicht... ist gerade aus... aber ich kenn da'n gutes Restaurant *gg*"
              sooo ... und nun liegt es an uns, den apachen irgendwie mitzuteilen, was der ie eigentlich von ihm wollte... den IE umprogrammieren geht nicht..
              also entweder "intelligente" 404-(Datei nicht gefunden) Fehlerseiten, die eben die Datei dann doch finden oder aber mod_rewrite, wobei ich nicht weiß, wie letzteres mit urlencoded ümlauten im dateinamen umgeht (und ist auch nicht bei jedem provider zu haben, davon mal ganz ab...)


              greetz, high
              Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
              When everything else fails, manipulate the data...
              Beschriftungen / Großformatdruck / Werbemittel

              Kommentar


              • #8
                @highrise

                Hehe, ok danke für deine anschauliche Erklärung - jetzt hab ich's wirklich verstanden :P

                Gut, dann werde ich's mal mit deinem Workaround versuchen. Kann es sein, dass dieses Problem nur bei Apache besteht? Denn ich entwickle lokal auf einem IIS und der checkt das anscheinend problemlos.

                Danke, Greetz Lukas

                Kommentar


                • #9
                  Tja, also ich würde dir empfehlen, einfach keine Umlaute / Sonderzeichen in Datei- bzw. Verzeichnisnamen zu verwenden. Schreibst dir einfach eine Funktion, die z.B. ü durch ue ersetzt usw. und alle sonstigen Sonderzeichen rauslöscht oder durch - ersetzt.
                  Kannst dir dazu ja noch ein Script bauen, was im Nachhinein die bereits existierenden Order und Dateien umbenennt.
                  hopka.net!

                  Kommentar


                  • #10
                    Re: Bildergallerie - Probs mit Umlauten

                    Original geschrieben von skalu
                    Ich arbeite zwar mit urlencode(), allerdings nur dort, wo Verzeichnisnamen über die URL (GET) übergeben werden, aber das ist ja nicht der Fall.
                    Natürlich wird das Bild bei <img src="..:"> per GET angefordert ...!

                    Und da du dort dummerweise nicht für eine URL-gerechte Kodierung gesorgt hast, kodiert der Browser die Sonderzeichen jetzt selber - so wie er's für richtig hält (bzw. konfiguriert ist).

                    Wenn du also die Kodierung kontrollieren willst - dann nimm sie auch an dieser Stelle selber vor.
                    Das "Abfangen" über eine Fehlerseite sollte an so einer Stelle m.E. absolut unnötig sein.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      @wahsaga

                      Also du meinst, dass ich das so machen sollte?

                      PHP-Code:
                      <img border="0" src="galleries/Süden/thumb/thumb_<?php echo urlencode("Süden"); ?> 1.jpg">

                      Kommentar


                      • #12
                        PHP-Code:
                        <img border="0" src="<?php echo urlencode("galleries/Süden/thumb/thumb_Süden 1.jpg"); ?>">

                        Kommentar


                        • #13
                          @onemorenerd

                          Ja, ich hätte gleich das ganze encoden sollen, klar. Aber wenn ich's so mache, dann werden überhaupt keine Bilder mehr gefunden.

                          @wahsaga

                          Ist an der Sache mit dem IE-Verhalten denn nichts dran? Denn ich habe das schon so probiert, wie's onemorenerd erklärt hat, aber es funktioniert nicht!

                          Greetz Lukas

                          Kommentar


                          • #14
                            Original geschrieben von skalu
                            Ist an der Sache mit dem IE-Verhalten denn nichts dran?
                            Gegenfrage:
                            Ist denn die Logik darin, dass man die Werte selber passend kodiert, wenn man das nicht äußeren Umständen, über die man keine Kontrolle hat (Browsereinstellungen), überlassen will, nicht erkennbar ...?

                            Denn ich habe das schon so probiert, wie's onemorenerd erklärt hat, aber es funktioniert nicht!
                            Da er in seinem Beispiel urlencode auf den ganzen Pfad angewendet hat, werden auch die / kodiert - das ergibt natürlich nichts sinnvolles mehr.
                            (Bei dem anderen Fall, wo du einen kompletten Pfad als Parameter übergeben wolltest, war das natürlich OK - da im Query String kein / erlaubt ist, wird der / da auch kodiert. Aber in diesem Falle ist der Bildpfad ja kein GET-Parameter, sondern der path-Teil des URLs.)

                            Dein Beispiel mit urlencode("Süden") war schon der richtigere Weg.
                            Und wenn es mehrere Pfad-Bestandteile gibt, die Sonderzeichen enthalten können (auch Ordnernamen), dann sind diese halt einzeln mit urlencode zu behandeln, und mit / dazwischen wieder zusammenzufügen.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              @wahsaga

                              Ja, dann hatte ich es bisher eh schon fast richtig, nur gibt's da folgendes Problem, das ich mal hier darstellen möchte:

                              Bitte aber unbedingt im IE & Firefox anschauen: http://members.chello.at/lkaltenegger/fotos/test.html

                              Auf dem 1. Bild habe ich den relativen Pfad genommen, der noch überhaupt nicht encoded ist, und nur den Teil "Türkenschanzpark" manuell encoded und dann dort eingefügt (weil nur da das "ü" drinnen ist).

                              > funktioniert sowohl im IE als auch im Firefox

                              Beim 2. Bild habe ich sowohl das Verzeichnis als auch den kompletten Pfad + Dateinamen (natürlich ohne die "/" )encoded, daher auch das + zwischen "T%FCrkenschanzpark" und der "2".

                              > funktioniert überhaupt nicht - weder im IE noch im Firefox

                              Beim 3. Bild habe ich gar nichts verändert - gut das ist klar, dass es nicht funktioniert!

                              > funktioniert nur im Firefox

                              Aber funktioniert tut jedenfalls nur das, wo das Leerzeichen nicht mit encoded wird!

                              Wie gibt's das, dass das 2. dann nicht funktioniert? Hast du dafür ne Erklärung? Echt seltsam...

                              Greetz Lukas

                              Kommentar

                              Lädt...
                              X