◀一般トップへ
  • 5683 UTF-8をSJISにご認識するらしい
    • 5684 Re:UTF-8をSJISに誤認識するらしい
    • 5687 Re:UTF-8をSJISにご認識するらしい
      • 5688 Re2:UTF-8をSJISにご認識するらしい
        • 5690 Re3:UTF-8をSJISにご認識するらしい
          • 5692 Re4:UTF-8をSJISにご認識するらしい
            • 5733 ありがとうございました
          • 5700 早速Closeされたので、公告
  • [5683] UTF-8をSJISにご認識するらしい 穂下 2006年12月15日 16:37

    ほとんどがASCIIコードで、日本語が数文字しか入っていない
    UTF-8のファイルを開く際に、毎回、
    「このファイルは前回は別の文字コードUTF-8で開かれています。
    前回と同じ文字コードを使いますか?」
    と表示されてしまいます。
    例えば、「穂下」という日本語だけふくまれているUTF-8のファイルで起こります。
    (自分の本名(4文字)も同じ現象でした。)

    どうも、毎回、文字コード判別をし、SJISと判定しているみたいですね。
    これまで開いたファイルの文字コードは.iniファイルに保存されているようなので、
    文字判別をするのは、開いたことのないファイルだけにし、
    履歴にあるファイルは、最後に開いた形式で無条件に開くようにしていただけないでしょうか。
    毎回、「はい」「いいえ」「キャンセル」を答えなければいけないので、
    面倒です。


    • [5684] Re:UTF-8をSJISに誤認識するらしい 穂下 2006年12月15日 16:56

      タイトル誤変換しました。すみません。

      他には「株式会社三菱」
      という日本語だけ入ってる場合でもそうですね。
      何度保存しなおしてもそうでした。

      「UTF-8で保存するために日本語を埋めておく」
      と長い文章を入れたファイルは、メッセージが出ず、
      すぐに開いてくれます。
    • [5687] Re:UTF-8をSJISにご認識するらしい じゅうじ 2006年12月16日 14:17

      ▼ 穂下さん
      > どうも、毎回、文字コード判別をし、SJISと判定しているみたいですね。
      > これまで開いたファイルの文字コードは.iniファイルに保存されているようなので、文字判別をするのは、開いたことのないファイルだけにし、履歴にあるファイルは、最後に開いた形式で無条件に開くようにしていただけないでしょうか。
      > 毎回、「はい」「いいえ」「キャンセル」を答えなければいけないので、面倒です。

      補足説明すると、共通設定メニューに有る、
      「前回と異なる文字コードのとき問い合わせを行う(Q)」
      の、チェックを外した時の動作を、自分のMy 履歴(SAKURA.INI)から取って来るように変えて欲しい。
      と言う事ですね、私も賛成です。
      • [5688] Re2:UTF-8をSJISにご認識するらしい maru 2006年12月16日 16:46

        #1513775にあるように文字コード判別処理の改善は、ラスティブさんとげんたさんが検討をすすめていらっしゃるので、とりあえず設定部分のみ暫定変更案です。

        ほとんどのユーザにとっては、前回開いた文字コードを継承しても、問題となる可能性は少ないと思われ、設定の分かりやすさと問い合わせダイアログが出る手間とのバランスを考えると、自動認識優先と前回文字コード優先の2択がシンプルで良いように思います。

        問い合わせダイアログが表示されたときに、自動認識を選択しなければならないケースというと、自動認識が正しかったのに敢えて異なる文字コードで開いた場合か、文字コード混在のファイルの場合などで、かなり非一般的な状況だと思います。

        #1616869
        「前回と異なる文字コードのとき問い合わせを行う(&Q)」を「前回開いた文字コードを優先する(&Q)」に変更して、自動認識優先と前回文字コード優先の2択にするパッチです。
        • [5690] Re3:UTF-8をSJISにご認識するらしい げんた 2006年12月16日 19:54

          >#1513775にあるように文字コード判別処理の改善は、ラスティブさんとげんたさんが検討をすすめていらっしゃるので
          実はいつでも置き換えられるのですが,以前より悪化するケースがあるかどうかが不明なので放置気味になっております.

          >自動認識優先と前回文字コード優先の2択
          以前にこの話が出たときはうやむやのままスルーしてしまった気がしますが,がんばって思い出してみますと,
          現在の選択肢は「自動認識優先」と「尋ねる」の2種類で「前回の設定優先」が無い,
          そして自動認識優先は使う必要が無いんじゃないの?という話だったように思います.

          自動認識優先優先だと,意図せずにコードが変わってしまう可能性があるのでは?
          例えばSJISのデータの後ろに意図せずにEUCデータが混入してEUCと認識されたとします.
          しかし,元々SJISの部分はEUCで解釈出来ず,解釈出来ない部分は素通しになるので,文章の先頭部分を見るとSJISで開かれたように見えます.そしてそのまま保存するとファイルがEUCになってしまいます.

          自動認識まかせだとこのように意図しないコードで開かれたことに気付かないケースが出てくるので「尋ねる」or「前回優先」の組み合わせがbetterかと思いますが,いかがでしょうか.
          • [5692] Re4:UTF-8をSJISにご認識するらしい じゅうじ 2006年12月16日 23:25

            ▼ maruさん
            > #1616869
            いつも自動判別を優先する必要性は無いと思います。

            ▼ げんたさん
            > 自動認識まかせだとこのように
            > 意図しないコードで開かれたことに気付かない
            > ケースが出てくるので「尋ねる」or「前回優先」
            > の組み合わせがbetterかと思いますが,いかがでしょうか.

            --- sakura_core\CEditDoc_20061204.cpp Fri May 26 23:35:44 2006
            +++ sakura_core\CEditDoc.cpp Sat Dec 16 23:08:34 2006
            @@ -567 +567,5 @@
            - if( bConfirmCodeChange ){
            + if( !bConfirmCodeChange ) // ADD じゅうじ 2006/12/16
            + m_nCharCode = fi.m_nCharCode;
            + else
            +// if( bConfirmCodeChange ) // DEL じゅうじ 2006/12/16
            + {

            これで直ると思いますが、この CEditDoc::FileRead() で余分な処理を除いた版はPatchにて。
            以前の話では、MRUにするのなら(未チェックの条件では)自動認識のルートは不要。
            SUBMIT出来ないので、Yahoo!/Developer/Source/CEditDoc_cpp.diff に置きました。

            data:3692 X->O data:5692 間違えました。
            • [5733] ありがとうございました 穂下 2007年01月11日 18:13

              遅ればせですが、ご対応ありがとうございました
              m(__)m
          • [5700] 早速Closeされたので、公告 じゅうじ 2006年12月19日 01:48

            現在オープンしているファイルを、違う文字コードで二重オープンしようとすると、ワーニングのダイアログが出る時と、出ない時が有りますので、無くします。
            ダイアログが出る時 =ON 「前回と異なる文字コードのとき問い合わせを行う」
            ダイアログが出ない時=OFF「前回と異なる文字コードのとき問い合わせを行う」
            V 1.5.13.1
            CEditDoc_new.cpp [line:1303] をコメント化します。
            /* && m_pShareData->m_Common.GetQueryIfCodeChange() */

            そして、その前の段落の、文字コード判定を外すと、二重オープンを行う場合、ワーニングのダイアログが出る時と、出ない時が出来ます。
            ダイアログが出る時 =「文字コード指定」で、且つ現在と文字コードが異なる
            ダイアログが出ない時=「文字コード自動選択」ならば必ずダイアログは出ない
            つまりSAKURAは、単純なファイルの二重オープン・リクエストでは、ワーニングは出さないという事になります。文字コードが異なる場合だけワーニングが出ます。

            二重オープンならば、必ずワーニングのダイアログを出すようにすると、意味も違って来ます。