[Textdatei] dt. Umlaute nicht mehr korrekt !?

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

  • [Textdatei] dt. Umlaute nicht mehr korrekt !?

    Hi Jungs,

    ich lasse per Script eine Textdatei auslesen und im Browser anzeigen, doch ich erhalte nur "kaputte" dt. Umlaute + ß (sonstige Sonderzeichen machen keine Probleme).
    Die Datei im Editor angeschaut sieht völlig normal/richtig aus.

    vermutlich liegts irgendwie am Zeichensatz

    hier eine solche Datei. (In der ersten Zeile steht "äöüÄÖÜß", oder in anderer Reihenfolge)


    bin erfreut mein Wissen ein weiteres Mal erweitert zu bekommen
    [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

    [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

    [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
    (from here)

  • #2
    dein editor arbeitet mit utf-8, der browser zeigt alles standardmäßig in iso an.

    du kannst die kodierung im editor wechseln.

    Kommentar


    • #3
      oki, thx


      ... und gibt es vielleicht auch eine Möglichkeit im Script automatisch utf8 in iso umzuwandeln (falls erforderlich)?
      [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

      [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

      [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
      (from here)

      Kommentar


      • #4
        mit iconv.

        aber evtl. auch anders, kommt drauf an wie und wo?

        Kommentar


        • #5
          also es ist ein Fotoalbum, das automatisch einen Verzeichnisbaum abgeht und eine entsprechende Albumhirarchie erstellt.
          Die Bilder sollen von bestimmten Personen per FTP hochgeladen werden können. Zudem soll pro Ordner (= Album) eine Info-Textdatei im Verzeichnis liegen die genauere Angaben zu den Bildern enthält.

          also:
          1. Character-Encoding der Textdatei herausfinden
          2. falls utf8 dann nach iso konvertieren

          ... und da hab ich doch auch schon was gefunden: das dank dir und das per Suche

          ich poste meine Erfahrung/Lösung, sobald ich es hab ... wenn ich in den nächsten Tagen tatsächlich noch dazu kommen sollte
          [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

          [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

          [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
          (from here)

          Kommentar


          • #6
            oki, ich hab mal probiert:

            iconv ist bei mir nicht einkompiliert

            utf8_decode() funktioniert optimal, jedoch nur wenn die Textdatei utf8 ist. Hat sie einen iso-Zeichensatz, so wird der Text zerstört.

            die Frage ist also: wie finde ich heraus welche Codierung eine Textdatei hat (ohne iconv zu verwenden)?
            Oder wie löse ich mein Problem sonst?
            [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

            [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

            [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
            (from here)

            Kommentar


            • #7
              versuch mal evtl. vorher einen header abzuschicken.
              also
              PHP-Code:
              <?php
              header
              ("Content-type: text/plain; charset: UTF-8");
              echo 
              file_get_contents('foo.txt');
              ?>
              dann müsste der browser die kodierung richtig wählen.

              Kommentar


              • #8
                http://de.php.net/manual/de/ref.mbstring.php
                http://de.php.net/manual/de/function...t-encoding.php
                funktioniert gut ^^

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

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

                Kommentar


                • #9
                  @ghostgambler: thx, mb_detect_encoding hat mir geholfen!

                  gelöst habe ich es nun mit diesem Code:
                  Code:
                  // UTF-8 Dateien in ISO-8859-1 umwandeln
                  if (mb_detect_encoding($string.' ', 'UTF-8, ISO-8859-1') == 'UTF-8') {
                    $string = utf8_decode($string);
                  }
                  Achtung: Dieses Leerzeichen das ich an das Ende des Strings angehängt habe ist _notwendig_, da das Ergebnis sonst in manchen Fällen falsch ist!
                  Siehe Anmerkungen zu mb_detect_encoding auf php.net:
                  telemach
                  28-Jul-2005 03:48
                  beware : even if you need to distinguish between UTF-8 and ISO-8859-1, and you the following detection order (as chrigu suggests)
                  mb_detect_encoding('accentu�e' , 'UTF-8, ISO-8859-1')
                  returns ISO-8859-1, while
                  mb_detect_encoding('accentu�' , 'UTF-8, ISO-8859-1')
                  returns UTF-8
                  bottom line : an ending '�' (and probably other accentuated chars) mislead mb_detect_encoding
                  d.h. am Ende des Strings darf kein "heikles" Zeichen stehen, deshalb dieser Space.
                  [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

                  [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

                  [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
                  (from here)

                  Kommentar


                  • #10
                    andere Möglichkeit, so hab ich es auch gemacht, ich nutz nur die encoding-Funktion:
                    PHP-Code:
                    function is_utf8($string) {
                      
                       
                    // From http://w3.org/International/questions/qa-forms-utf-8.html
                       
                    return preg_match('%^(?:
                             [\x09\x0A\x0D\x20-\x7E]            # ASCII
                           | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
                           |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
                           | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
                           |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
                           |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
                           | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
                           |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
                       )*$%xs'
                    $string);
                      
                    // function is_utf8 
                    wobei ich die Zeilenumbrüche und Kommentare entfernen würde, dann kann auch der Modifier x weg!

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

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

                    Kommentar

                    Lädt...
                    X