Sto comprimendo i file JavaScript e il compressore si lamenta del fatto che i miei file contengono 
caratteri.
Come posso cercare questi personaggi e rimuoverli?
Sto comprimendo i file JavaScript e il compressore si lamenta del fatto che i miei file contengono 
caratteri.
Come posso cercare questi personaggi e rimuoverli?
U+FEFF
è il codepoint Unicode utilizzato per una BOM, ma la BOM stessa è il modo in cui quel codepoint è codificato (UTF-8 0xEF 0xBB 0xBF
:, 0xFF 0xFE
UTF-16LE:, UTF-16BE:, 0xFE 0xFF
ecc.). Quindi i file in questione sono codificati UTF-8, che il compressore rileva quando li decodifica in punti di codice Unicode effettivi.
Risposte:
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
Presumo che lo strumento si rompa se hai altri utf-8 nei tuoi file, ma in caso contrario, forse questa soluzione alternativa può aiutarti. (Non testato ...)
Modifica : aggiunta l' -CSD
opzione, come da commento di tchrist.
-CSD
interruttore o con l' PERL_UNICODE
invariabile impostato su SD
, affinché funzioni.
perl -CSD -pe 's/^\x{feff}//' file.csv
:, notare il passaggio da <fffe> a <feff>.
Puoi rimuoverli facilmente usando vim , ecco i passaggi:
1) Nel tuo terminale, apri il file usando vim:
vim file_name
2) Rimuovi tutti i caratteri BOM :
:set nobomb
3) Salva il file:
:wq
Un altro metodo per rimuovere quei caratteri - usando Vim :
vim -b fileName
Ora quei caratteri "nascosti" sono visibili ( <feff>
) e possono essere rimossi.
Grazie per le risposte precedenti, ecco una variante sed (1) per ogni evenienza:
sed '1s/^\xEF\xBB\xBF//'
Su Unix / Linux:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
Su MacOSX
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Notare il $ dopo sed per mac.
Su Windows
C'è Super Sed, una versione migliorata di sed. Per Windows si tratta di un file .exe autonomo, concepito per l'esecuzione dalla riga di comando.
$'\xEF\xBB\xBF//'
Bash è una caratteristica di Bash, non particolarmente una caratteristica di Mac o OSX. Con questo comando, Bash analizzerà le sequenze di escape in byte effettivi prima di passare la riga di comando a sed
. A seconda della sed
variante, questo potrebbe funzionare o meno (anche se sono sicuro che sia utile per gli utenti OSX sapere che dovrebbe funzionare immediatamente per loro).
La soluzione di @ tripleee non ha funzionato per me. Ma cambiare la codifica del file in ASCII e di nuovo in UTF-8 ha funzionato :-)
Ho usato vimgrep per questo
:vim "[\uFEFF]" *
anche il normale comando di ricerca di vim
/[\uFEFF]
Il comando 'file' mostra se la BOM è presente:
Ad esempio: "file myfile.xml" visualizza: "documento XML 1.0, testo UTF-8 Unicode (con BOM), con righe molto lunghe, con terminatori di riga CRLF"
dos2unix rimuoverà la BOM.
In Windows è possibile utilizzare l' utilità di ricodifica con backport da UnxUtils .
In Sublime Text puoi installare il pacchetto Evidenziatore e quindi personalizzare l'espressione regolare nelle impostazioni dell'utente.
Qui ho aggiunto \uFEFF
alla fine della highlighter_regex
proprietà.
{
"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
}
Per sovrascrivere le impostazioni predefinite del pacchetto, posizionare il file qui:
~ / .config / sublime-text-3 / Packages / User / highlighter.sublime-settings
Suggerisco di utilizzare lo strumento "dos2unix", per favore prova a farlo funzionare dos2unix ./thefile.js
.
Se necessario, prova a utilizzare qualcosa di simile per più file:
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
I miei saluti.
bomstrip
non era facilmente disponibile sul mio Mac - quindi find . -type f -exec dos2unix '{}' +
Salva il file senza firma del codice.
<U+FEFF>
, questa è<0xEF,0xBB,0xBF>
la distinta base dei file UTF8, quindi dovresti cambiare il titolo. Come vorresti rimuoverli? Dalle fate magiche? Con uno strumento da riga di comando? Modificando uno per uno? Notepad ++ può modificare la codifica in UTF8 senza BOM. Ad esempio, cercando su