EclipseのHTMLエディタはcontent-type記述から文字コードを自動判別するが、DjangoテンプレートのようにHTMLの断片だけのファイルを開くと判別できず文字化けしてしまう。
回避するにはファイル個別に文字コードを指定すること。フォルダやプロジェクト、ContentTypeのデフォルトの文字コードを指定しても、自動判別をしてしまって強制的にShift_JISとして読み込んでしまう。これを直したい。
直す方法
Macの場合
$ cd /Applications/Eclipse.app/Contents/Eclipse/plugins
$ jar -xvf org.eclipse.wst.html.core_1.3.0.v201804302243.jar plugin.xml plugin.xml
$ vim plugin.xml
次の部分 note: no default-charset for HTML, should use 'platform'
の下のdescriberをコメントアウトする
<!-- note: no default-charset for HTML, should use 'platform'
<describer class="org.eclipse.wst.html.core.internal.contenttype.ContentDescriberForHTML" />
-->
$ jar -uf org.eclipse.wst.html.core_1.3.0.v201804302243.jar plugin.xml plugin.xml
これでプロジェクトや親フォルダの文字コードを優先して従うようになった。
考察
この動作、Java使いだった頃は全然気にならなかったのに、Python/Django使いになったら真っ先に気になった。
Mayaaテンプレートはブラウザで表示できる「ページ」だから、むしろ自動判別が正しい(忘れてたり指定が間違ったら「正しく化けて欲しい」)。
JSPの場合もpageEncodingディレクティブがある。忘れたらサーバーサイドで化ける。
Djangoテンプレートはいずれの記述もない。この辺りも文化の違いなのかな。