Estoy comprimiendo archivos JavaScript y el compresor se queja de que mis archivos tienen 
carácter.
¿Cómo puedo buscar estos personajes y eliminarlos?
Estoy comprimiendo archivos JavaScript y el compresor se queja de que mis archivos tienen 
carácter.
¿Cómo puedo buscar estos personajes y eliminarlos?
U+FEFF
es el punto de código Unicode que se usa para una lista de materiales, pero la lista de materiales en sí es cómo se codifica ese punto de código (UTF-8:, 0xEF 0xBB 0xBF
UTF-16LE:, 0xFF 0xFE
UTF-16BE:, 0xFE 0xFF
etc.). Entonces, los archivos en cuestión están codificados en UTF-8, que el compresor detecta al decodificarlos en puntos de código Unicode reales.
Respuestas:
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
Asumiría que la herramienta se romperá si tiene otro utf-8 en sus archivos, pero si no, tal vez esta solución pueda ayudarlo. (Sin probar ...)
Editar : agregó la -CSD
opción, según el comentario de tchrist.
-CSD
interruptor, o con el PERL_UNICODE
envariable configurado en SD
, para que eso funcione.
perl -CSD -pe 's/^\x{feff}//' file.csv
observe el cambio de <fffe> a <feff>.
Puede eliminarlos fácilmente usando vim , estos son los pasos:
1) En su terminal, abra el archivo usando vim:
vim file_name
2) Elimine todos los caracteres BOM :
:set nobomb
3) Guarde el archivo:
:wq
Otro método para eliminar esos caracteres, usando Vim :
vim -b nombreArchivo
Ahora esos caracteres "ocultos" son visibles ( <feff>
) y pueden eliminarse.
Gracias por las respuestas anteriores, aquí hay una variante sed (1) por si acaso:
sed '1s/^\xEF\xBB\xBF//'
En Unix / Linux:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
En MacOSX
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Observe el $ después de sed para mac.
En Windows
Hay Super Sed, una versión mejorada de sed. Para Windows, este es un .exe independiente, diseñado para ejecutarse desde la línea de comandos.
$'\xEF\xBB\xBF//'
es una característica de Bash, no particularmente una característica de Mac o OSX. Con esta construcción, Bash analizará las secuencias de escape en bytes reales antes de pasar la línea de comando a sed
. Dependiendo de su sed
variante, esto puede funcionar o no (aunque estoy seguro de que es útil para los usuarios de OSX saber que debería funcionar para ellos).
La solución de @ tripleee no funcionó para mí. Pero cambiar la codificación del archivo a ASCII y nuevamente a UTF-8 funcionó :-)
He usado vimgrep para esto
:vim "[\uFEFF]" *
también comando normal de búsqueda de vim
/[\uFEFF]
El comando 'archivo' muestra si la lista de materiales está presente:
Por ejemplo: 'file myfile.xml' muestra: "Documento XML 1.0, texto Unicode UTF-8 (con BOM), con líneas muy largas, con terminadores de línea CRLF"
dos2unix eliminará la lista de materiales.
En Windows, puede usar la utilidad de recodificación retroportada de UnxUtils .
En Sublime Text puedes instalar el paquete Highlighter y luego personalizar la expresión regular en su configuración de usuario.
Aquí agregué \uFEFF
al final de la highlighter_regex
propiedad.
{
"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
}
Para sobrescribir la configuración predeterminada del paquete, coloque el archivo aquí:
~ / .config / sublime-text-3 / Packages / User / highlighter.sublime-settings
Sugiero el uso de la herramienta "dos2unix", pruébelo para ejecutarlo dos2unix ./thefile.js
.
Si es necesario, intente usar algo como esto para varios archivos:
for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done
Mis saludos.
bomstrip
no estaba disponible fácilmente en mi mac, así que me tomé el tiempo para darte la versión simple:find . -type f -exec dos2unix '{}' +
Guarde el archivo sin firma de código.
<U+FEFF>
, es decir,<0xEF,0xBB,0xBF>
esa es la lista de materiales de los archivos UTF8, por lo que debe cambiar el título. ¿Cómo le gustaría eliminarlos? ¿Por hadas mágicas? ¿Con la herramienta de línea de comandos? ¿Editando uno por uno? Notepad ++ puede cambiar la codificación a UTF8 sin BOM. Por ejemplo, simplemente buscando en Google 5 segundos de "strip BOM utf8". He encontrado esto para Linux: ueber.net/who/mjl/projects/bomstrip