eclipseでShift-JISで書かれたファイルを編集後に上書き保存できないことがあります。
保存できない旨のエラーメッセージは以下です。
「保管を完了できませんでした。
理由:
一部の文字は”shift-jis”文字エンコードを使用してマップすることはできません。
エンコードを変更するか、”shift-jis”文字エンコードによってサポートされていない文字を除去してください。」
どうやら、eclipseの設定で文字コードを「shift-jis」に設定している場合に、Shift-JISで扱えない文字を保存しようとするとこのエラーが発生するようです。
どの文字なのか突き止めようとしても、エラーの詳細は以下のみでよく分かりません。
Input length = 1
恐らく対象の文字は1つではないと思いますが、私の場合、たいてい「から」を変換した「~」が原因です。文字コードを「shift-jis」や「sjis」とした場合に発生します。
UTF-8にしてしまえば問題は発生しないのですが、元々のコーディング規約がShift-JISと決められていると、対応が難しくなってしまいます。
そこで、解決方法として文字コードに「MS932」を指定します。基本的には「MS932」は「Shift-JIS」に近いのですが、機種依存文字が取り除かれているため、「~」や「㈱」などもeclipseで保存が可能になります。
ちなみに、エラーが発生する同条件でも、他のエディタでは問題なく編集、上書き保存ができることがあります。
今回のケースはJava特有の「Shift-JIS」の機種依存文字を嫌う性質が、eclipseでエラーとなる根源と言えるようです。
ファイルの文字コードの確認方法
- 該当のファイルを右クリックで「プロパティ」を選択します
- 左メニュー「リソース」の「テキスト・ファイルのエンコード」で「その他」を選択して、プルダウンから「MS932」を選択します。
- 選択肢に「MS932」がない場合には直接入力します。一度入力すれば、次回からプルダウンの選択肢に表示されます。
確認環境:Eclipse Marts 4.5
同じ現象でとても悩んでいました。
助かりました。ありがとうございます。