ファイルの先頭に\ufeff
があるため、コンパイラがコンパイルを拒否するJavaクラスがあります。BOMがvim -b file.Java
によって存在するという事実を確認できます。 、ただしxxd
もhexdump
も2バイトを表示しません。表示する方法はありますか?
U + FEFF文字は、UTF-8で3バイトを超えてエンコードされます:ef bb bf
。
xxd
またはhexdump
はバイトの内容を表示するため、これらの3バイトは、vim -b
のようにエンコードする文字ではありません。
そのBOM(UTF-8では意味がありません)を削除し、Microsoftテキストファイルの他の特異性(問題の原因である可能性が高い)を修正するには、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