wake-up-neo.net

<0xEF, 0xBB, 0xBF> Zeichen in Dateien. Wie entferne ich sie?

Ich komprimiere JavaScript-Dateien und der Kompressor beschwert sich darüber, dass meine Dateien -Zeichen enthalten. 

Wie kann ich nach diesen Zeichen suchen und sie entfernen? 

78
Quintin Par
Perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js

Ich würde davon ausgehen, dass das Tool beschädigt wird, wenn Sie andere utf-8-Dateien in Ihren Dateien haben. Wenn nicht, kann Ihnen diese Problemumgehung helfen. (Nicht getestet ...)

Bearbeiten : fügte die -CSD-Option hinzu, wie im Kommentar von tchrist angegeben.

17
tripleee

Sie können sie leicht mit vim entfernen. Hier sind die Schritte:

1) Öffnen Sie die Datei in Ihrem Terminal mit vim:

vim file_name

2) Entfernen Sie alle BOM Zeichen:

:set nobomb

3) Speichern Sie die Datei:

:wq
161
Mohammad Anini

Eine weitere Methode zum Entfernen dieser Zeichen - mit Vim :

vim -b Dateiname

Diese "versteckten" Zeichen sind jetzt sichtbar (<feff>) und können entfernt werden.

25

Vielen Dank für die vorherigen Antworten, hier ist eine sed (1) Variante für alle Fälle:

sed '1s/^\xEF\xBB\xBF//'
16

Unter Unix/Linux:

sed 's/\xEF\xBB\xBF//' < inputfile > outputfile

Unter MacOSX

sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile

Beachten Sie das $ after sed für Mac.

Unter Windows

Es gibt Super Sed eine verbesserte Version von sed. Für Windows ist dies eine eigenständige EXE-Datei, die von der Befehlszeile aus ausgeführt werden soll.

15
Masum

Die Verwendung von tail könnte einfacher sein: 

tail --bytes=+4 filename > new_filename
5
Dzanvu

@Tripleees Lösung hat für mich nicht funktioniert. Aber das Ändern der Dateicodierung in ASCII und erneut in UTF-8 hat den Trick :-)

3

Ich habe dafür vimgrep verwendet 

:vim "[\uFEFF]" *

auch normaler vim Suchbefehl

/[\uFEFF]
2
Olexiy Zamkoviy

In Windows können Sie das Dienstprogramm recode aus UnxUtils verwenden.

1

In Sublime Text können Sie das Highlighter-Paket installieren und dann den regulären Ausdruck in Ihren Benutzereinstellungen anpassen.

Hier habe ich \uFEFF am Ende der highlighter_regex-Eigenschaft hinzugefügt. 

{
    "highlighter_enabled": true,
    "highlighter_regex": "(\t+ +)|( +\t+)|[\u2026\u2018\u2019\u201c\u201d\u2013\u2014\uFEFF]|[\t ]+$",
    "highlighter_scope_name": "invalid",
    "highlighter_max_file_size": 1048576,
    "highlighter_delay": 3000
}

Um die Standardpaketeinstellungen zu überschreiben, legen Sie die Datei hier ab:

~/.config/sublime-text-3/Packages/User/highlighter.sublime-settings

1
JJD

Der Befehl 'file' zeigt an, ob die Stückliste vorhanden ist:

Beispiel: 'file myfile.xml' zeigt Folgendes an: "XML 1.0-Dokument, UTF-8-Unicode-Text (mit Stückliste) mit sehr langen Zeilen und CRLF-Zeilenabschlusszeichen"

dos2unix entfernt die Stückliste.

1
LittletonDoug

Speichern Sie die Datei ohne Codesignatur.

0
Masood Moshref

Ich empfehle die Verwendung von "dos2unix", bitte testen Sie dos2unix ./thefile.js.

Versuchen Sie gegebenenfalls, so etwas für mehrere Dateien zu verwenden:

for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done

Schöne Grüße.

0
Wellington1993