~/blog/resolving-java-u3000-is-an-invalid-character-error
Published on

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

880文字2分で読めます–––
閲覧数
Authors
  • avatar
    Name
    Shou Arisaka nyapp.buzz/shou
    short bio
    Z世代の情報技術者。Next.jsで自作SNSを個人開発中。

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
avatar

Shou Arisaka

情報技術者 / Z世代プログラマー / SaaSアプリやSNSを開発
今すぐ話そう!

15歳でWordPressサイトを立ち上げ、ウェブ領域に足を踏み入れる。翌年にはRuby on Railsを用いたマイクロサービス開発に着手し、現在はデジタル庁を支えたNext.jsによるHP作成やSaaS開発のプロジェクトに携わりながら、React.js・Node.js・TypeScriptによるモダンなウェブアプリの個人開発を趣味でも行う。
フロントエンドからバックエンドまで一貫したアジャイルなフルスタック開発を得意とし、ウェブマーケティングや広告デザインも必要に応じて担当、広告運用・SEO対策・データ分析まで行う低コストかつ高品質な顧客体験の提供が好評。
国内外から200万人を超える人々に支えられ、9周年を迎えるITブログ「yuipro」の開発者、デザイナーでありライター。現在ベータ段階の自作SNS「nyapp.buzz」を日本一の国産SNSとするべく奮闘中。

Created with Fabric.js 5.2.4 何かご質問がありますか?