Je suis en train de compresser des fichiers JavaScript et le compresseur se plaint que mes fichiers contiennent du 
caractère.
Comment puis-je rechercher ces caractères et les supprimer?
Je suis en train de compresser des fichiers JavaScript et le compresseur se plaint que mes fichiers contiennent du 
caractère.
Comment puis-je rechercher ces caractères et les supprimer?
U+FEFF
est le point de code Unicode utilisé pour une nomenclature, mais la nomenclature elle-même est la façon dont ce point de code est codé (UTF-8 :, 0xEF 0xBB 0xBF
UTF-16LE 0xFF 0xFE
:, UTF-16BE:, 0xFE 0xFF
etc.). Les fichiers en question sont donc encodés en UTF-8, ce que le compresseur détecte lors de leur décodage en points de code Unicode réels.
Réponses:
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
Je suppose que l'outil se cassera si vous avez d'autres utf-8 dans vos fichiers, mais sinon, cette solution de contournement peut peut-être vous aider. (Non testé ...)
Edit : ajout de l' -CSD
option, selon le commentaire de tchrist.
-CSD
commutateur, ou avec la valeur PERL_UNICODE
envariable définie sur SD
, pour que cela fonctionne.
perl -CSD -pe 's/^\x{feff}//' file.csv
:, notez le changement de <fffe> à <feff>.
Vous pouvez facilement les supprimer à l'aide de vim , voici les étapes:
1) Dans votre terminal, ouvrez le fichier en utilisant vim:
vim file_name
2) Supprimez tous les caractères de la nomenclature :
:set nobomb
3) Enregistrez le fichier:
:wq
Une autre méthode pour supprimer ces caractères - en utilisant Vim :
vim -b nom_fichier
Maintenant, ces caractères "cachés" sont visibles ( <feff>
) et peuvent être supprimés.
Merci pour les réponses précédentes, voici une variante sed (1) au cas où:
sed '1s/^\xEF\xBB\xBF//'
Sous Unix / Linux:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
Sur MacOSX
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Notez le $ après sed pour mac.
Sous Windows
Il y a Super Sed une version améliorée de sed. Pour Windows, il s'agit d'un .exe autonome, destiné à être exécuté à partir de la ligne de commande.
$'\xEF\xBB\xBF//'
est une fonctionnalité Bash, pas particulièrement une fonctionnalité Mac ou OSX. Avec cette structure, Bash analysera les séquences d'échappement en octets réels avant de passer la ligne de commande à sed
. Selon votre sed
variante, cela peut ou non fonctionner (même si je suis sûr qu'il est utile pour les utilisateurs d'OSX de savoir que cela devrait fonctionner immédiatement pour eux).
La solution de @ tripleee n'a pas fonctionné pour moi. Mais changer le codage du fichier en ASCII et à nouveau en UTF-8 a fait l'affaire :-)
J'ai utilisé vimgrep pour cela
:vim "[\uFEFF]" *
commande de recherche vim également normale
/[\uFEFF]
La commande 'fichier' indique si la nomenclature est présente:
Par exemple: 'file myfile.xml' affiche: "Document XML 1.0, texte UTF-8 Unicode (avec nomenclature), avec de très longues lignes, avec terminateurs de ligne CRLF"
dos2unix supprimera la nomenclature.
Dans Windows , vous pouvez utiliser rétroportés recodage utilitaire à partir UnxUtils .
Dans Sublime Text, vous pouvez installer le package Highlighter, puis personnaliser l'expression régulière dans vos paramètres utilisateur.
Ici j'ai ajouté \uFEFF
à la fin de la highlighter_regex
propriété.
{
"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
}
Pour remplacer les paramètres par défaut du package, placez le fichier ici:
~ / .config / sublime-text-3 / Packages / User / highlighter.sublime-settings
Je suggère l'utilisation de l'outil "dos2unix", veuillez tester pour l'exécuter dos2unix ./thefile.js
.
Si nécessaire, essayez d'utiliser quelque chose comme ceci pour plusieurs fichiers:
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
Mes salutations.
bomstrip
n'était pas facilement disponible sur mon mac - alors prenez le temps de vous donner la version simple:find . -type f -exec dos2unix '{}' +
Enregistrez le fichier sans signature de code.
<U+FEFF>
, c'est<0xEF,0xBB,0xBF>
la nomenclature des fichiers UTF8, vous devez donc changer le titre. Comment souhaitez-vous les supprimer? Par des fées magiques? Par l'outil de ligne de commande? En éditant un par un? Notepad ++ peut changer le codage en UTF8 sans BOM. Par exemple, en googlant 5 secondes de "strip BOM utf8", j'ai trouvé ceci pour Linux: ueber.net/who/mjl/projects/bomstrip