Wie entferne ich  vom Anfang einer Datei?

Lesezeit: 7 Minuten

Wie entferne ich i¿ vom Anfang einer Datei
Matt

Ich habe eine CSS-Datei, die gut aussieht, wenn ich sie mit öffne geditaber wenn es von PHP gelesen wird (um alle CSS-Dateien zu einer zusammenzuführen), werden diesem CSS die folgenden Zeichen vorangestellt: 

PHP entfernt alle Leerzeichen, also bringt ein zufälliges  mitten im Code das Ganze durcheinander. Wie ich bereits erwähnt habe, kann ich diese Zeichen nicht wirklich sehen, wenn ich die Datei in gedit öffne, daher kann ich sie nicht sehr einfach entfernen.

Ich habe das Problem gegoogelt, und es stimmt eindeutig etwas mit der Dateicodierung nicht, was Sinn macht, da ich die Dateien per FTP und auf verschiedene Linux/Windows-Server verschoben habe rsync, mit einer Reihe von Texteditoren. Ich weiß nicht wirklich viel über Zeichenkodierung, also wäre Hilfe dankbar.

Wenn es hilft, wird die Datei im UTF-8-Format gespeichert und gedit lässt mich nicht im ISO-8859-15-Format speichern (das Dokument enthält ein oder mehrere Zeichen, die nicht mit der angegebenen Zeichencodierung codiert werden können). Ich habe versucht, es mit Windows- und Linux-Zeilenenden zu speichern, aber beides hat nicht geholfen.

  • Dies scheint das Problem zu lösen. 95isalive.com/expression/index.html

    Benutzer928609

    5. September 2011 um 9:46 Uhr

  • Jemand nimmt uns die Stückliste ab

    – David Heffernan

    5. September 2011 um 9:46 Uhr

  • stackoverflow.com/q/20778921/995714

    – phuklv

    30. September 2015 um 9:52 Uhr

Wie entferne ich i¿ vom Anfang einer Datei
Vinko Vrsalović

Drei Worte für Sie:

Byte-Order-Mark (BOM)

Das ist die Darstellung für die UTF-8-BOM in ISO-8859-1. Sie müssen Ihren Redakteur anweisen, keine Stücklisten zu verwenden, oder einen anderen Redakteur verwenden, um sie zu entfernen.

Um die Entfernung der Stückliste zu automatisieren, können Sie verwenden awk wie in dieser Frage gezeigt.

Wie eine andere Antwort sagt, wäre es am besten, wenn PHP die Stückliste tatsächlich richtig interpretiert, dafür können Sie sie verwenden mb_internal_encoding()so was:

 <?php
   //Storing the previous encoding in case you have some other piece 
   //of code sensitive to encoding and counting on the default value.      
   $previous_encoding = mb_internal_encoding();

   //Set the encoding to UTF-8, so when reading files it ignores the BOM       
   mb_internal_encoding('UTF-8');

   //Process the CSS files...

   //Finally, return to the previous encoding
   mb_internal_encoding($previous_encoding);

   //Rest of the code...
  ?>

  • Ja, ich habe das gefunden, als ich es gegoogelt habe, aber wie entferne ich sie?

    – Matt

    15. Juli 2010 um 13:38 Uhr

  • Die Stückliste wird nicht entfernt, sondern ignoriert.

    – Cole Tobin

    23. Juni 2013 um 22:19 Uhr

  • Oder der andere Weg (ignorieren) könnte die Codierung ändern.

    – mr5

    21. Oktober 2015 um 3:20 Uhr

  • Windows Notepad (ugh) fügt sie hinzu; Vorschlag von einem Dup dieser Frage ist die Verwendung von Notepad ++, mit dem “UTF-8 ohne BOM” als Codierung festgelegt werden kann. Oder verwenden Sie einen echten Editor … (emacs!) 🙂

    – Jesus

    12. Februar 2016 um 15:26 Uhr

  • Genau das ist das Problem, verschiedene Zeichencodierungen verwenden unterschiedliche Bytes für dieselben Zeichen. Lesen Sie noch einmal den dritten Absatz der Antwort.

    – Vinko Vrsalović

    7. Oktober 2017 um 17:18 Uhr


1646883849 237 Wie entferne ich i¿ vom Anfang einer Datei
V. Rohan

Öffnen Sie Ihre Datei in Notepad++. Von dem Codierung Menü, auswählen Ohne Stückliste in UTF-8 konvertieren, speichern Sie die Datei, ersetzen Sie die alte Datei durch diese neue Datei. Und es wird funktionieren, verdammt sicher.

  • In Notepad++ v7.6.6 (64-Bit) müssen Sie klicken In UTF-8 konvertieren.

    – bauchig

    15. Mai 2019 um 7:05 Uhr

Wie entferne ich i¿ vom Anfang einer Datei
Michael Schreiber

Im PHPkönnen Sie Folgendes tun, um alle Nichtzeichen einschließlich des betreffenden Zeichens zu entfernen.

$response = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $response);

  • falls Sie nur das “ï” töten wollen, verwenden Sie diese $response = preg_replace(‘/[\x80-\xFF]//’, ”, $antwort);

    – nh-labs

    8. Juni 2017 um 20:49 Uhr

  • @guido_nhcol.com.br_ Du fügst ein Extra hinzu /es sollte sein: $response = preg_replace('/[\x80-\xFF]/', '', $response);

    – H Aßdøµ

    16. Juli 2019 um 7:41 Uhr


1646883850 425 Wie entferne ich i¿ vom Anfang einer Datei
Diego Palomar

Für diejenigen mit Shell-Zugriff ist hier ein kleiner Befehl, um alle Dateien mit dem BOM-Satz im public_html-Verzeichnis zu finden – stellen Sie sicher, dass Sie es auf Ihren richtigen Pfad auf Ihrem Server ändern

Code:

grep -rl $'\xEF\xBB\xBF' /home/username/public_html

und wenn du damit zufrieden bist vi Editor, öffnen Sie die Datei in vi:

vi /path-to-file-name/file.php

Und geben Sie den Befehl ein, um die BOM zu entfernen:

set nobomb

Speicher die Datei:

wq

BOM ist nur eine Folge von Zeichen ($EF $BB $BF für UTF-8), also entfernen Sie sie einfach mit Skripten oder konfigurieren Sie den Editor so, dass sie nicht hinzugefügt wird.

Von BOM aus UTF-8 entfernen:

#!/usr/bin/perl
@file=<>;
$file[0] =~ s/^\xEF\xBB\xBF//;
print(@file);

Ich bin sicher, es lässt sich leicht in PHP übersetzen.

  • Beachten Sie, dass die BOM keine Folge von Zeichen ist, sondern ein einzelnes Zeichen. Wenn die Datei in UTF-8 vorliegt, wird das Zeichen durch drei dargestellt Byte. Wenn die Datei in UTF-8 vorliegt, ist das Anzeigen in einer anderen Codierung (dh einer, in der EF BB BF dort erscheint, wo die BOM sein sollte) ein Fehler. Um die BOM aus einer UTF-8-Datei zu entfernen, sollte man das (einzelne) Zeichen U+FEFF entfernen. Ja, Pedanterie!

    – Jeffrey L Whitledge

    15. Juli 2010 um 14:05 Uhr

  • Ich konnte das in PHP nicht zum Laufen bringen (das ist nur meine Inkompetenz, nicht deine: P), also habe ich nachgesehen, ob die Stückliste vorhanden ist, und die ersten 3 Zeichen entfernt. Hier ist der Code, falls ihn jemand braucht: if( substr($css, 0,3) == pack(“CCC”,0xef,0xbb,0xbf) ) { $css = substr($css, 3); }

    – Matt

    15. Juli 2010 um 14:08 Uhr

  • es übersetzt in php als $string = preg_replace('/\x{EF}\x{BB}\x{BF}/','',$string); . Bevor Sie dies verwenden, überlegen Sie noch einmal, ob Sie das Problem nicht stattdessen an der Quelle beheben können.

    – Gemeiner Hecht

    6. Oktober 2011 um 15:53 ​​Uhr


Ich kenne PHP nicht, daher weiß ich nicht, ob dies möglich ist, aber die beste Lösung wäre, die Datei als UTF-8 und nicht als eine andere Codierung zu lesen. Die BOM ist eigentlich ein ZERO WIDTH NO BREAK SPACE. Dies sind Leerzeichen. Wenn die Datei also in der richtigen Codierung (UTF-8) gelesen würde, würde die BOM als Leerzeichen interpretiert und in der resultierenden CSS-Datei ignoriert.

Ein weiterer Vorteil des Lesens der Datei in der richtigen Codierung besteht darin, dass Sie sich keine Gedanken über falsch interpretierte Zeichen machen müssen. Ihr Editor sagt Ihnen, dass die Codepage, in der Sie es speichern möchten, nicht alle Zeichen enthält, die Sie benötigen. Wenn PHP die Datei dann in der falschen Kodierung liest, dann ist es sehr wahrscheinlich, dass andere Zeichen außer dem BOM stillschweigend falsch interpretiert werden. Verwenden Sie überall UTF-8, und diese Probleme verschwinden.

  • Beachten Sie, dass die BOM keine Folge von Zeichen ist, sondern ein einzelnes Zeichen. Wenn die Datei in UTF-8 vorliegt, wird das Zeichen durch drei dargestellt Byte. Wenn die Datei in UTF-8 vorliegt, ist das Anzeigen in einer anderen Codierung (dh einer, in der EF BB BF dort erscheint, wo die BOM sein sollte) ein Fehler. Um die BOM aus einer UTF-8-Datei zu entfernen, sollte man das (einzelne) Zeichen U+FEFF entfernen. Ja, Pedanterie!

    – Jeffrey L Whitledge

    15. Juli 2010 um 14:05 Uhr

  • Ich konnte das in PHP nicht zum Laufen bringen (das ist nur meine Inkompetenz, nicht deine: P), also habe ich nachgesehen, ob die Stückliste vorhanden ist, und die ersten 3 Zeichen entfernt. Hier ist der Code, falls ihn jemand braucht: if( substr($css, 0,3) == pack(“CCC”,0xef,0xbb,0xbf) ) { $css = substr($css, 3); }

    – Matt

    15. Juli 2010 um 14:08 Uhr

  • es übersetzt in php als $string = preg_replace('/\x{EF}\x{BB}\x{BF}/','',$string); . Bevor Sie dies verwenden, überlegen Sie noch einmal, ob Sie das Problem nicht stattdessen an der Quelle beheben können.

    – Gemeiner Hecht

    6. Oktober 2011 um 15:53 ​​Uhr


1646883851 50 Wie entferne ich i¿ vom Anfang einer Datei
NickWebmann

Bei mir hat das funktioniert:

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

Wenn ich dieses Meta entferne, erscheint das  wieder. Hoffe das hilft jemandem…

985980cookie-checkWie entferne ich  vom Anfang einer Datei?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy