Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] utf-8 BOM in .txt schreiben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] utf-8 BOM in .txt schreiben

    Hi,

    ich sitz' grad irgendwie aufm Schlauch. In Verbindung mit einer Klasse für das mitloggen von Meldungen lege ich eine .log Datei an. Da die Daten die ich dort hineinschreibe utf-8 codiert sind, wollte ich nun die BOM für utf-8 an den Anfang schreiben. Habe mir das nun einfach so schön vorgestellt:

    PHP-Code:
    // [...]
    private function _bom() {
        if(!
    ftell($this->handle)) {
            
    fwrite($this->handleunicode_encode("FEFF","utf-8").PHP_EOF);
        }
    }
    // [...] 
    Tja, aber 3 mal dürft ihr raten^^.
    1. Es geht nicht?
    2. Es geht nicht?
    3. Es geht nicht!

    Bei mir liegt es einfach daran, dass er die Funktion unicode_encode nicht kennt (undefined function). Aber davon mal abgesehen, denke ich, dass das sowieso nicht der richtige Weg ist.

    Ich wäre also sehr dankbar für eine Lösung oder einen Ansatz, so ein dummes BOM (utf- dahinzubekommen.

    PS: das !ftell ist nur da um zu prüfen ob die Datei leer ist, es kann nämlich vorkommen das die Datei existiert und nur unten erweitert wird, in diesem Fall ist ja keine weitere BOM nötig.

    Grüße Frank
    sigpic


  • #2
    Hallo,
    ich hab sowas noch nie gemacht oder gebraucht, aber wie waer es mit

    fwrite($fp, 0xFEFF);

    Aber selbst die Hexschreibweise ist geraten.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Funktioniert leider auch nicht. Das schreibt einfach nur 65279 in die Datei.

      Ich habe jetzt mal mit einem Texteditor so ein BOM eingefügt und mit php ausgelesen. Das Zeichen kann man natürlich nicht einfach so im terminal ausgeben also hab ich nen utf8_decode angewendet, mit dem Erfolg das ein "?" herauskommt (Code: 63)

      //EDIT:
      Ich habs hinbekommen, hab das in einem Kommentar zu fopen() im Manual gefunden.
      Dort steht ein Code wie man das BOM überspringt beim lesen, den ich umwandeln konnte.

      Die Lösung:
      PHP-Code:

          
      private function _bom() {
              if(!
      ftell($this->handle)) {
                  
      fwrite($this->handleb"\xEF\xBB\xBF");
                  
      fwrite($this->handle$this->endofline);
              }
          } 
      Danke für deine Mühe Chriz
      sigpic

      Kommentar

      Lädt...
      X