バグ:一部のシナリオ解説が文字化けする

Issue #654 resolved
tachi gigas created an issue

お疲れ様です。

表題の問題が最新のPy(Build: 2018-03-04 15:32:38)で、例えば下町砂介様の「くすんだ香り漂うカード」(Shift-JIS)などで発生しております。2.3では問題ない事を確認したため、wxPythonを4にしたためと睨みます。

CWPyRichTextCtrlset_text内で例外が発生するとdecode_textの処理に飛ぶのですが、ここでutf-16と誤判定してしまうようです。 CardWirthシナリオの作成環境は漏れなくWindowsのはずなので、cw.MBCSの優先度を少し上げるべきなような気がします。が、 utf-16とcw.MBCSの判定を逆にすると、今度はIssue #417 で挙げたproxi様のreadmeが化けてしまうのです。

今からPull Requestしますが、試行錯誤した結果、shift_jisの判定を混ぜるしか思いつきませんでした(これで解決ならバグってる気がします)が、如何なものでしょうか。

ある程度目星をつけてテストはしましたが、ご心労多々あると思いますが、影響範囲等見落としかないか、チェックをお願いします。

Comments (4)

  1. k4nagatsuki repo owner

    ありがとうございます。対応が遅れて申し訳ありません。

    MBCSはいわゆるShift JISの事で、cp932やms932はこれとほぼ同じものを指しています(実際には微妙に違いますが)。

    今回の問題は、wxPythonのアップデートで起きるような性質のものには見えないのですが、Python 2.7.13→14の更新で起きるとも考えづらいですし、どうも謎ですね。


    decode_textの処理は厳密さに欠けており、たまたま間違ったエンコーディングで変換エラーが出ないと、そのままでたらめな文字列を生成してしまいます。

    そしてそれはこの世のあらゆる文字コード判定が抱えている問題で、厳密解は存在しません。だましだまし対応していく以外に手はありませんので、このPull Requestの対応は正解とも不正解とも言えません。

    とはいえ目の前のテキストが化けなくなるという結果は出ていますので、とりあえずマージして、他の所で問題が出ないか様子を見ていく事にしましょう。

  2. tachi gigas reporter

    対応ありがとうございました。これで使ってみて、おかしかったらまた調査します。しばらく様子を見てから解決にしましょう。

  3. k4nagatsuki repo owner

    今のところはよさそうなので解決にします。

    また問題が起きたら再オープンするか新しいIssueを立ててください。

  4. Log in to comment