Ankündigung

Einklappen
Keine Ankündigung bisher.

fgetcsv liefert keine Sonderzeichen

Einklappen

Neue Werbung 2019

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

  • fgetcsv liefert keine Sonderzeichen

    Hi,

    ich öffne auf meiner Seite eine Datenbank in Form einer csv-Datei, aus der ich Inhalte für meine Seite lade. Dabei werden aber Sonderzeichen wie Umlaute etc. als schwarze Raute mit Fragezeichen dargestellt. Ich kenne das sonst, wenn ich Texte von Windows unter Linux öffne. Ich gehe also mal davon aus, dass es am verwendeten Zeichensatz liegt. Gibt es eine Möglichkeit, den bei der Verwendung von fgetcsv oder fopen zu beeinflussen? Wenn ich die Datei von Server herunterlade und in Excel öffne, ist alle wunderbar.

    Hier noch mein Code:
    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>PHP Demo</title>

    <body>

        <?php
            $row 
    1;
            
    $handle fopen ("../datenbank.csv","r");
            while ( (
    $data fgetcsv ($handle1000",")) !== FALSE ) {
            
                    if (
    $data[0] == '2810241') {
                        print 
    "Gefunden in Reihe " $row ":<br />\n" $data[21] . "<br />\n";
                    }
                    
                    
    $row++;
            }
            
    fclose ($handle);
            
            print 
    "Fertig nach " $row " Reihen.";
        
    ?>
        
    </body>
    </html>
    Gruß, Heimchen

  • #2
    Zitat von Heimchen Beitrag anzeigen
    Ich gehe also mal davon aus, dass es am verwendeten Zeichensatz liegt.
    Nein, wenn dann an der Zeichenkodierung.
    Mach dir bitte den Unterschied klar.

    Gibt es eine Möglichkeit, den bei der Verwendung von fgetcsv oder fopen zu beeinflussen?
    Beim reinen Einlesen von Daten ist die Zeichenkodierung uninteressant - interessant wird sie dann, wenn die Daten interpretiert werden.

    Evtl. reicht es im vorliegenden Fall schon aus, sie vor der Ausgabe in die von deiner Seite verwendete Zeichenkodierung umzukodieren.
    Dazu müsstest du aber erst mal in Erfahrung bringen, welche Kodierung überhaupt vorliegt.
    Und natürlich verlierst du dabei u.U. Daten, wenn die Zielkodierung einzelne Zeichen nicht abbilden kann.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      Da bin ich gestern auch drüber gestolpert

      Hab eine Anmerkung in meiner PHP Hilfe gefunden (seltsamerweise ist dieser Hinweis nicht in der deutschen Hilfe enthalten):

      Note: Locale setting is taken into account by this function. If LANG is e.g. en_US.UTF-8, files in one-byte encoding are read wrong by this function.
      Mir hat das geholfen...
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Na dann bringen wir das doch in Erfahrung... äh, ach ja, und wie?

        Die Kodierung wird doch als Charset bezeichnet, oder? Und meine mäßige Rückübersetzung hat daraus den Zeichensatz gemacht. Mein Fehler.

        Kommentar


        • #5
          Ok, nachdem ich per Metaangabe die Kodierung auf utf8 gesetzt und meinen String vor der Ausgabe durch utf8_encode() geschickt habe, ist die Ausgabe so wie ich sie mir vorstelle. Mit einer Ausnahme: Trademark-Zeichen werden nicht als solche dargestellt sondern als irgendein merkwürdiges anderes Zeichen. Hat dazu jemand vielleicht nen Lösungsansatz?

          Kommentar

          Lädt...
          X