
Tengo una clase Java que el compilador se niega a compilar debido \ufeff
al inicio del archivo. Puedo ver el hecho de que la lista de materiales está presente en vim -b file.java
, pero ni xxd
muestra hexdump
los dos bytes. ¿Hay alguna manera de hacer que lo hagan?
Respuesta1
El carácter U+FEFF está codificado en UTF-8 en 3 bytes: ef bb bf
.
xxd
o hexdump
le muestra el contenido del byte, por lo que esos 3 bytes, no el carácter que codifican esos 3 bytes vim -b
.
Para eliminar esa lista de materiales (que no tiene sentido en UTF-8) y corregir otras idiosincrasias de los archivos de texto de Microsoft (que probablemente sea la fuente de su problema), puede usar dos2unix
.
$ printf '\ufefffoobar\r\n' | hd
00000000 ef bb bf 66 6f 6f 62 61 72 0d 0a |...foobar..|
0000000b
$ printf '\ufefffoobar\r\n' | uconv -x name
\N{ZERO WIDTH NO-BREAK SPACE}\N{LATIN SMALL LETTER F}\N{LATIN SMALL LETTER O}\N{LATIN SMALL LETTER O}\N{LATIN SMALL LETTER B}\N{LATIN SMALL LETTER A}\N{LATIN SMALL LETTER R}\N{<control-000D>}\N{<control-000A>}
$ printf '\ufefffoobar\r\n' | uconv -x hex
\uFEFF\u0066\u006F\u006F\u0062\u0061\u0072\u000D\u000A
$ printf '\ufefffoobar\r\n' | dos2unix | hd
00000000 66 6f 6f 62 61 72 0a |foobar.|
00000007