プログラミング

Java \u3000’は不正な文字です の原因と解決法

Javaで、コピペしたコードを貼り付けて、javacすると、こういうエラーが。

PS C:\pg\java> javac .\Wind.java
.\Wind.java:6: エラー: この文字は、エンコーディングMS932にマップできません
frame.setSize(850,700); 縲?縲?縲?縲?縲?縲?縲?縲? 縲?//

.\Wind.java:6: エラー: 文ではありません
frame.setSize(850,700); 縲?縲?縲?縲?縲?縲?縲?縲? 縲?//
                        ^                         

ファイルの文字コードはちゃんとUTF-8だし、BOMがついてるとかもないし…

調べてみると、文字コードを指定してエンコードするとよさそう。

PS C:\pg\java> javac -encoding UTF-8 .\Wind.java
.\Wind.java:6: エラー: '\u3000'は不正な文字です
frame.setSize(850,700);           //

あれれ。

前述のエラーはでなくなったけど、新しいエラーが。

調べてみると、\u3000は全角空白らしい。なるほど。

Atomで正規表現を有効にして、\u3000を置換してみる。

改めて、

PS C:\pg\java> javac -encoding UTF-8 .\Wind.java

できました。

文字コード指定しなくてもできんじゃね?

PS C:\pg\java> javac .\Wind.java

できた。

いっぱいそういう文字を含んだファイルが有る場合は、sedなんかでまとめて置換すると良いと思う。

といってもソースの中に日本語を含む場合は、文字化けを防ぐためにビルドするときに前述のオプションを付ける必要がある。

javac -encoding UTF-8 .\Wind.java

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です