Shift-JIS日本語のファイルが、上書き保存時にUTF-8 BOM付きになることがある

  1. 特に日本語は含めていない、ファイル内容全般が英数字だけのファイルがあります。

    SHIFT-JISファイルで保存したあとで、CTRL+Sなどで何回か保存すると、
    勝手に、UTF-8 BOM付きになる事象が起きました。

    これによって、Meryで保存したVBScriptなどがエラーになる事象発生しています。

    確認いただけないでしょうか。

     |  tak  |  返信
  2. 補足します。

    UTF-8になったのは、EditorConfigの影響もいあったのかもしれません。

    ただし、日本語を含む文章は、「上書き保存」では、勝手にEncodingが変更されることは
    なかったのですが、日本語を含まない文書のみ、「上書き保存」で、Encodingが変更されるようです。
    -----
    該当フォルダーの.EditorConfigは以下のようなっています。
    ----
    root = true
    # EditorConfig
    [*]
    charset = utf-8-bom
    end_of_line = crlf
    indent_size = 8
    indent_style = tab
    insert_final_newline = true
    trim_trailing_whitespace = true

    [*.py]
    indent_size = 4
    indent_style = space

    [*.ps1]
    indent_size = 4
    indent_style = tab
    charset = utf-8-bom

     |  tak  |  返信
  3. Mery をご愛用いただきありがとうございます。

    EditorConfig は [上書き保存] の前にエンコーディングを .editorconfig で設定したものに変更してから上書き保存します。

    シフト JIS のファイルを開いて上書き保存した場合、.editorconfig の適用範囲内のファイルであれば、UTF-8 (BOM 付き) になるのが正常な動作です。

    いただいた .editorconfig で試してみましたが、日本語を含む・含まないにかかわらず UTF-8 (BOM 付き) に変更されました。

    確認した環境は Mery Ver 3.0.3 (64bit)、EditorConfig Ver 1.0.2 です。

    ご報告いただいたケースで考えられる原因としては、"エンコーディングが変更されない「日本語を含む文章」のファイル" の場所が .editorconfig の影響を受けないフォルダーの配下にあるとか、

    他には、そのファイルと同じフォルダーに別の .editorconfig が存在しているとか。

    あとは、EditorConfig のバージョンが Ver 1.0.2 未満でしたら .editorconfig の適用タイミングが少し緩いので、Ver 1.0.2 に更新すると改善されるかもしれません。

     |  Kuro  |  返信
  4. Pluginが、1.0.0でしたので、1.0.2に上げてみました。
    確かに、1.0.0と動きは変わったのですが、以下のようになりました。

    ・文書内容を変更後に、上書きすると、SHIFT-JISからUTF-8に変わる。
    ・少しも編集せず、上書き保存しても、Encoding形式に変化なし。

    なお、Mery本体のバージョンは、まだ3.0.3です。

     |  tak  |  返信
  5. ご確認ありがとうございます。

    EditorConfig は [上書き保存] を実行したとき、保存する直前にエンコードを変更する仕様となっているので、ご提示いただいた動作で合っていると思います。

    編集を行っていない場合はそもそも [上書き保存] の操作ができませんから、エンコードも変更されないはずなので、EditorConfig の仕様どおりだと思います。

     |  Kuro  |  返信
  6. なるほど。ありがとうございます。
    お手間を取らせてすみませんでした。

     |  tak  |  返信
スポンサーリンク