かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot でメール送信する Web アプリケーションを作る ( 番外編 )( なぜか Java のソースファイルの文字コードが Windows-31J に。。。 )

メール送信機能を実装しようとして src/main/java/ksbysample/webapp/email/web の下の MailsendController.java を開いた時に、IntelliJ IDEA の画面右下に表示されているファイルの文字コードwindows-31j と表示されていることに気づきました。

f:id:ksby:20150418234142p:plain

いろいろ調査した結果、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」ボタンをクリックします。

f:id:ksby:20150418235230p:plain

これだけではデフォルトの設定を変更しただけですので、windows-31j になっているファイルの文字コードUTF-8 に変更します。

src/main/java/ksbysample/webapp/email/web の下の MailsendController.java を開いた後、IntelliJ IDEA の画面右下の文字コードが表示されているところをクリックしてリストを表示した後、「UTF-8」を選択します。

f:id:ksby:20150418235735p:plain

以下のファイルを全て変更します。

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-31jUTF-8 で違いがないためのようです。

何も commit されなかったのはいいのですが、新規に GitHub から clone した場合に日本語の入っていないファイルの文字コードがどう判断されるのかは一度確認しておく必要がありそうです。。。 ( 今は一旦保留にしてメール送信機能の実装を進めます )