95779


Javaで日本語を含むファイルをコンパイルしようとするとマップできないというエラーが発生します。

エラー内容

[code]

    エラー: この文字は、エンコーディングMS932にマップできません //縺ゅ＞縺?縺医♀
    
[/code]

また、これはテストでひらがな（あいうえお）をコメントで書いてそれをコンパイルしました。文字コードはUTF-8で書いています。


CC BY-SA 4.0
2023-07-27T09:15:09.080
95778
2023-09-03T06:18:06.217
2023-07-27T11:50:15.733
3060
59255
question
java
Javaで日本語を含むファイルのコンパイルでエラー: エンコーディングMS932にマップできません


エラーの原因は「文字コードはUTF-8で書いて」いることです。  
JavaのコンパイラがソースコードをWindows日本語標準コードのMS932で読む設定になっているため、UTF-8のソースコードを適切に読み込めずにエラーが発生しています。

対策としては、下記が挙げられます。

  * ソースコードをMS932(CP932、Shift-JISとほぼ同じ意味)で保存する  
Windowsのメモ帳で保存する時は、「ファイル」メニュー→「名前を付けて保存」ダイアログで`文字コード(E):`を`ANSI`にして保存する

  * Java JDKのバージョンを18以上に上げる  
Java JDK 18以降、標準の文字コードがUTF-8になった

  * コマンドラインでコンパイルしている場合、コンパイルオプションに`-encoding utf-8`を追加する  
`javac -encoding utf-8 ファイル名.java`

**参考資料**

  * [Java 18 JEP 400 UTF-8 by Default の Windows 環境での影響](https://qiita.com/toshiona/items/54086adaba391c687c3b)
  * [【Java】コンパイル時のエラー「この文字は、エンコーディングMS932にマップできません」](https://kounan-akiha.hatenablog.jp/entry/2018/03/18/221602)


CC BY-SA 4.0
2023-07-27T09:42:11.337
95779
2023-07-27T09:42:11.337
9820
95778
answer


自分も何回か同じようなエラー出したことが多くありました  
別の回答で言われているので同じというと同じですが…。

ちょっと自分がひとつ不思議に思ったのは、  
デバックし終わった後と前とでも、文字の解釈に違いが存在するという点です。

なんとなく戸惑いましたが、考えずにとりあえずそういうものかーっで  
終わっちゃいましたが。

結論としては、なんでもUTF8で今では処理してることが多いです。


CC BY-SA 4.0
2023-09-03T00:40:45.360
96104
2023-09-03T06:18:06.217
2023-09-03T06:18:06.217
3060
59651
95778
answer