Spring Boot でメール送信する Web アプリケーションを作る ( 番外編 )( なぜか Java のソースファイルの文字コードが Windows-31J に。。。 )
メール送信機能を実装しようとして src/main/java/ksbysample/webapp/email/web の下の MailsendController.java を開いた時に、IntelliJ IDEA の画面右下に表示されているファイルの文字コードが windows-31j と表示されていることに気づきました。
いろいろ調査した結果、Settings 画面に「Project Encoding」という項目があり、Project 作成直後は windows-31j に設定されていたためでした。初期値に System Default ( Windows の場合には windows-31j ) が設定されるようです。
UTF-8 に変更します。IntelliJ IDEA のメインメニューから「File」-「Settings...」を選択して「Settings」ダイアログを開きます。
「Settings」ダイアログが開いたら、画面左上の検索フィールドに "Project Encoding" と入力し、検索して表示された左側のツリーから「Editor」-「File Encodings」を選択します。選択後、画面右側に「Project Encoding」の設定項目が表示されますので「windows-31j」→「UTF-8」に変更して「OK」ボタンをクリックします。
これだけではデフォルトの設定を変更しただけですので、windows-31j になっているファイルの文字コードを UTF-8 に変更します。
src/main/java/ksbysample/webapp/email/web の下の MailsendController.java を開いた後、IntelliJ IDEA の画面右下の文字コードが表示されているところをクリックしてリストを表示した後、「UTF-8」を選択します。
以下のファイルを全て変更します。
src/main/java/ksbysample/webapp/email/web/MailsearchController.java
src/main/java/ksbysample/webapp/email/web/MailsendController.java
src/main/resources/templates/common/bottom-js.html
src/main/resources/templates/common/head-cssjs.html
※htmlファイルは <meta charset="UTF-8"/>
が記述されているものは自動的に UTF-8 になっていたのですが、記述されていないものは windows-31j になっていました。
Spring Boot でメール送信する Web アプリケーションを作る ( その3 )( Project の作成 ) の方にも後で記述を追加しておきます。
またこの作業の最後に commit しようとしたのですが、何も commit できませんでした。変更したファイルの中にマルチバイト文字が入っていないので、windows-31j と UTF-8 で違いがないためのようです。
何も commit されなかったのはいいのですが、新規に GitHub から clone した場合に日本語の入っていないファイルの文字コードがどう判断されるのかは一度確認しておく必要がありそうです。。。 ( 今は一旦保留にしてメール送信機能の実装を進めます )