winで新規作成したテキストファイルが文字化けする

  1. いつも便利に使わせて頂いております。

    即出、無理でしたら申し訳ありません。
    Meryの使い方の問題なのかもしれませんが、
    最近のバージョンを使用して気づいた点がひとつ。

    環境:
    win7 32bit/2.6.2~2.6.3
    winXP/2.5.6

    1、Meryのオプションで「既定のエンコード」を「S-JIS」以外(主にUTF系)に設定しておきます
    2、winの右クリックから「新規作成>テキストドキュメント」を選択して、空のテキストファイルを作成
    3、空のテキストファイルをMeryで開いて編集、保存、ファイルを閉じる
    4、保存したファイルを開くと文字化けして開くか「エンコードが~」のダイアログが発生

    ※ 3でファイルを開いた際、Meryの枠の右下に表示しているエンコードは、1で指定したものが表示されます
    ※ Mery内で新規作成したファイルを保存した場合は問題ありません

    次回バージョンアップ等で修正されれば大変ありがたく思います。
    以上。ご確認の程、よろしくお願いいたします。

     |  ギャラ  |  返信
  2. こんばんは、ご愛用&ベータ検証のご協力ありがとうございます。

    ご不便をおかけして申し訳ございませんが、「既定のエンコード」で UTF-16 を選択されている場合の仕様になります。

    一応、仕様の説明をさせていただきますね。(めっちゃ長いです…)

    まず、前提として UTF-16LE、UTF-16BE の【BOM 無し】はテキストなのかバイナリなのかを判別できません。 したがって、UTF-16 (BOM 無し) を開く際にはバイナリを開くときと同様の警告メッセージが表示されます。これは UTF-16 (BOM 無し) のファイルの構造上、仕方ないです。

    ちなみに UTF-16 (BOM 無し) を以下のテキストエディタで開いてみるとこんな感じでした。

    ・サク〇エディタ → 文字化け
    ・秀〇エディタ → 文字化け
    ・E〇Editor → 「エンコードを指定してください」のアラート
    ・Te〇aPad → 文字化け

    ここまでは、UTF-16 (BOM 無し) のファイルの仕様です。
    ----

    で、Mery の「既定のエンコード」で UTF-16 の 【BOM 付き】のほうを選んでいるとします。BOM 付きですと当然、UTF-16 でも文字化けせず普通に開くことは可能です。

    ここで、ギャラさんがご指摘された、win の右クリックから「新規テキストドキュメント.txt」を作成して Mery で開くとします。

    この場合、Mery は文字コードが判別できない (空のファイルなので当然ですが) ため「既定のエンコード」を基準になんとか文字コードを判別しようとがんばります。

    既定の文字コードは「UTF-16 (BOM 付き)」ですが、どう見ても空のファイルに BOM は付いていません。

    仕方がないので、なるべく「既定のエンコード」に従いつつも BOM がないので UTF-16 (BOM 無し) として開きます。

    そのまま編集して保存すると、UTF-16 (BOM 無し) で保存されて、最初に述べました UTF-16 (BOM 無し) はテキストかバイナリかわからないので警告が表示される。

    ということになります。
    ----

    「既定のエンコード」が【BOM 付き】なのに、エンコードが判別できなかった時に【BOM 無し】になるのはおかしくね?と思われるかもしれませんが、

    BOM 無しのファイルをエンコード不明のまま開いて、そのまま保存したときに意図しない [BOM] が勝手につけられてしまうのを避ける安全のための仕様です。

    フォーラムにお寄せいただいたご意見を参考に現在のような仕様になりましたが、ご指摘されたケースにおいては、ちょっと問題がありそうなので、改善案があればご協力いただけると幸いです。

    って、改めて読み返してみると、わかりづらいですよね…… ^^;
    うーん、仕様が難しすぎます。

     |  Kuro  |  返信
  3. ご説明ありがとうございました。
    返信が遅くなって申し訳ありません。

    解決策ではありませんが、回避策として
    「既定のエンコード」をS-JISにし、
    別名保存でUTFに変更する様にしています。

    上書きするんだけどエンコードを変更するマクロがないかライブラリを漁ってみたいと思います。

     |  ギャラ  |  返信
  4. ご返信ありがとうございます。

    その後、頂いたご意見を参考に仕様を考え直しておりまして、次のバージョンでは以下のように仕様変更してみようかと思っています。

    --------
    [既定のエンコード] で UTF-16 を指定した場合の仕様を下記の通り変更。
    ・新規作成のときは [既定のエンコード] を適用
    ・空のファイルを開いたときは [既定のエンコード] を適用
    ・ASCIIのみのファイルを開いたときは [UTF-8 (BOM無し)] を適用
    --------

    これで、空のファイルを開いたときにエンコードが変わってしまうのは避けられるようになると思います。

    それと、ASCII のみのファイルの場合は UTF-16 形式ではないことは確かなので、このケースもエンコードが変わってしまうのを避けられると思います。

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