パスワードを忘れた? アカウント作成
12883 story

Windowsのメモ帳(notepad)に文字化けするバグ 131

ストーリー by GetSet
XPでは確認したけど、他のVerはどうだろう? 部門より

WindVoice曰く、"Windowsに付属するnotepadに、ファイル読み込み時に文字化けするバグが発見されている。(参考:CNET Japanの記事)
4+3+3+5byteの文字列、例えば"tiny bug for nards"と書き込んで保存し、再度ファイルを開くと文字化けして表示されるというもの。ファイルを開くときにANSI文字コードを誤ってUnicodeと判定するために発生する問題であるようだ。バグの報告を探してみたが、マイクロソフト社関係のサイトからは見つけることができなかった。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • えーうっそー (スコア:5, おもしろおかしい)

    by Anonymous Coward on 2006年07月07日 22時53分 (#974691)
    $Sソフトさまの中で唯一バグがないソフトだと思ってたのに。

    # 後はよろしく
    • Re:えーうっそー (スコア:4, すばらしい洞察)

      by Anonymous Coward on 2006年07月07日 23時05分 (#974704)
      Windowsの標準アプリの中では、マインスイーパ/フリーセル/ソリティアあたりのほうが、ランニングテストの実施時間は長いと思います。
      なので、そちらのほうがバグの残ってる確率は低いのではないかと、、、

      というのは良いとして、真面目な話 バグの無いソフトなんて実在するんですか?
      cat や ls のような利用頻度のアプリにでも known bug は存在しますよ。
      親コメント
    • Re:えーうっそー (スコア:3, おもしろおかしい)

      by Anonymous Coward on 2006年07月08日 7時58分 (#974852)
      $Sソフトさまの中で唯一バグがないソフトだと思ってたのに。
      「M$」じゃなくて「$S」…SS?

      ちょ、おま…セガサターンのソフトに大量のバグがあるとでも言うのか!

      # 否定できないのでAC
      親コメント
    • Re:えーうっそー (スコア:2, おもしろおかしい)

      by Anonymous Coward on 2006年07月08日 0時11分 (#974756)
      M$ とか書く変な人は時々見かけるけど、$S は初めて見た
      親コメント
  • by patagon (1453) on 2006年07月07日 22時59分 (#974696) 日記
    「Tiny bug for nards」だと化ける。
    「Tiny Bug for nards」だと化けない。

    大文字2文字、2文字以上含まれていれば化けないのかな?

    テストにしては少ないけど。
    • by patagon (1453) on 2006年07月07日 23時04分 (#974703) 日記
      大文字2文字でも「TIny bug for nards」だと化けます。
      「TiNy bug for nards」でも化けます。
      「Tiny bUg for nards」でも化けます。

      各文字列の最初の文字が大文字なのが2文字以上だと化けない?
      親コメント
    • by Anonymous Coward on 2006年07月07日 23時44分 (#974732)
      文字コード判定アルゴリズムが垣間見える気がします。

      別コメントにもあるように、2バイトずつ区切ってリトルエンディアンの
      UTF-16として解釈するみたいだけど、「 B」(0x20,0x42→U+4220)はUnified
      CJK Ideographs(U+4E00 - U+9FBF)の範囲を逸脱し、CJK Ideographs
      Extension Aの範囲になってしまうので、Unicode文字列である可能性が
      ぐっと低くなるとみなされるのでしょう。

      どなたか、さらなる解析をお願いします。

      親コメント
  • 起動オプション (スコア:5, 参考になる)

    by T.Sawamoto (4142) on 2006年07月08日 0時00分 (#974750)
    ちょっとnotepad.exeを見てみたら、案の定起動オプションがありました。

    /A : ANSI(とゆーか、日本語版ではShift-JIS)として読み込み

    文字化けするファイル hoge.txt をANSIとして読むばやい、

    notepad /A hoge.txt

    とすればおっけーです。
    (同じく /W もあるみたい)
  • 容疑者? (スコア:5, 参考になる)

    by Anonymous Coward on 2006年07月08日 0時41分 (#974778)
    notepad.exeをVisualStudio付属のDependancyWalkerで調べると、

    IsTextUnicode

    なんてAPIをリンクしています。
    で、MSDNを調べると、こんな注意書きがあったり。

    >IS_TEXT_UNICODE_STATISTICS をセットした場合と
    >IS_TEXT_UNICODE_REVERSE_STATISTICS をセット
    >した場合は、統計的分析が行われます。
    >この2つのテストは絶対的確実性を持っていません。
    >統計的なテストでは、文字列の上位バイトと下位バイ
    >トの間である程度の変動を想定しているため、ASCII
    >文字列が ASCII 文字列として認識されないことがあ
    >ります。

    まぁ、ぶっちゃけ、完全な自動認識なんて無理、って事でしょうねぇ。
    たしか、IEだかMozzillaも文字コードの認識を「統計的分析」でやってるのでタマに失敗する。
    でも、それは致し方ない事だ、って話があったような記憶があるのですが。
  • 一応XP Home(SP2)のメモ帳でためしましたが、ファイル(F)→開く(O)で出てくるウィンドウには、文字コード選択の欄があります。
    確かに、4+3+3+5byteの文字列なテキストファイルをクリックして選択するとANSI→Unicodeに変わります(中を見て判別してるのでしょう)。
    そのまま開くと文字化けするのは当然ですが、明示的にANSIを指定して開けば問題なかったです。

    文字コードの自動判別を間違うソフトなんて山ほどあります(自分が愛用してるEmEditorもよく間違います)。
    ブラウザだってHTMLで明示的に文字コード指定されてない場合間違うことがあります。
    一々取り上げるようなネタではないのでは?
    • by Anonymous Coward on 2006年07月08日 6時23分 (#974842)
      既出かも知れないけどタイトルがちょうど良いので

      むかーし、NEC PC-98用MS-DOSのラインエディタにバグが見つかった、とかでNHK、民放各局のニュースで画面映像、NEC社員へのインタービューつきで報道していたのを覚えてる。
      バグの内容は覚えてなけど、そんなの報道してどうなるの? と思ったのは覚えている。
      親コメント
  • 嬉しい (スコア:4, おもしろおかしい)

    by Anonymous Coward on 2006年07月08日 3時45分 (#974829)
    文字化けなんて日本人の、特に、マイナーなOSとかブラウザを使っている人の問題だと思っていたのに。
    英語で、しかもWindowsの標準のアプリを使用してる人にも文字化けがちゃんと起こってるって知って、とっても嬉しいです。

    文書の文字コードを求めて文字コードを総当たりする苦しみを思い知るがいいのさー。
    うちらは今更文字化けの要因が一つや二つ増えたところでどうってことないんじゃー。ぼけー。
  • Vista β2でも再現 (スコア:3, 参考になる)

    by Anonymous Coward on 2006年07月07日 22時57分 (#974694)
    Windows Vista Beta 2 Build 5384のメモ帳でも再現しましたよ('A`)
  • by fault (18699) on 2006年07月07日 22時58分 (#974695)
    > "tiny bug for nards"と書き込んで保存し、再度ファイルを開くと文字化けして表示されるというもの。

    と入力したのに、スペルチェッカが動いて、勝手に "tiny bug for nerds" と修正されてしまうとかいうバグだったりして。

  • フレームの元? (スコア:3, 参考になる)

    by Takahiro_Chou (21972) on 2006年07月07日 23時07分 (#974705) 日記
    多分、同件だと思いますが、こんな [seesaa.net]フレームの元に成りそうなネタも有ります。
    文字化けが発生する条件は、上記ページからリンクされてるここ [wired.com]に載ってますが、ここに書かれた条件を満たしているからと言って、必ず文字化けする訳でも無いようです。

    しかし、「Bush hid the facts」だの「Japs ate our child」で文字化けするって、笑うには、ちとヘビーすぎますな。

    ついでに、私が試してみた限りでは「Java mac osx linux」とかも文字化けしました。
  • 開発者の言い訳 (スコア:3, おもしろおかしい)

    by eise (18678) on 2006年07月07日 23時16分 (#974713)
    それはバグではなくイースターエッグです。

    特定文字列でもないし、さすがに無理がありすぎるか・・・。
  • by pjam (13923) on 2006年07月07日 23時16分 (#974714) 日記

    notepad って、ファイル末(冒頭だったかな)に ".log" という4バイトを書いておくと、ファイルオープン時に日付日時を勝手に書き込んでくれる機能がついてませんでしたっけ?

    そもそもこのソフトウェアは大切なバイト列を扱うには向いていないものだ、という認識でおりました。今ではこの機能を無効にしたり出来るようになっているのかな。

    今は UNIX を触っていたので細かい点は確認せずに書き込んでいます。

  • 経験あり (スコア:3, 興味深い)

    by Anonymous Coward on 2006年07月08日 1時05分 (#974785)
    l3u2l1u2r2u2r2d1r2 と書いて保存すると、
    「20点・・・・・・・・」になります。
    2000でもXPでも起こります。

    ド素人なので、遭遇しても何も出来ず、途方に暮れるだけでした。
  • ああ (スコア:3, 参考になる)

    by Li-ion (25837) on 2006年07月08日 5時09分 (#974837) 日記
    以前、ファイルよ読み込んでーソートして別ファイルに書き込むという内容のプログラム作ってこの手の文字列で実行したら、なりました。

    プログラムのミスかなっと思ったのですが、悪いのはnotepad.exeだったんですね。

    // この機能?(バグ)って暗号に使える?
    //
    --
    Li-ion DC 1.2V(定格:3.7V) 500mA 乾電池はリサイクルへ
  • これはバグなのか? (スコア:3, すばらしい洞察)

    by Anonymous Coward on 2006年07月08日 10時32分 (#974878)
    ASCIIとしてもUTF-16LEとしても解釈できるファイルなんでしょう?
    それを、作った人の意図はASCIIだったからといって、UTF-16LEで解釈したら
    バグ、というのはなんだかなあと思います。じゃあ逆に、作った人の意図が
    UTF-16LEだったとしたら、ASCIIとして解釈するソフトのほうがバグだって
    ことになりますよ。

    日本人の感覚だと、たとえばS-JISとしてもEUCとしても解釈できるファイルを、
    そのファイルを作った人の意図とは違う文字コードとして自動判別してしまう
    ソフトがあっても、それは仕方のないことだと思うんですが。

    もちろん、文字コードとして解釈可能である、という以上の解析も可能ですし、
    ある程度はそういうことも期待していいとは思います。たとえば、
    候補となる文字コードすべてについて、その文字コードで解釈した場合に、
    いろんな言語について「その言語で書かれた文章らしさ」を数値化し
    (たとえば、日本語の文章だと、ひらがなが多いと日本語の文章らしさが
    大きくなるが、記号や、JISX0208に含まれない文字が多用されていると
    得点が下がるなど)、その(言語間での)最大値が最も大きくなる
    文字コードであると判別するなど。おそらく今回のファイルは、
    このレベルの判別で人間の意図を正しく類推できるはずでしょう。しかし、
    それでも完全ではありません。もうひとつ上の精度を目指すとすると、
    世界中の言語の辞書や文法チェッカーでチェックして妥当な結果になる
    文字コードであると判別するという方法が考えられます。しかし、
    それでもまだ完全ではありません。意図したいのはでたらめな文字列
    だったかもしれないですし、そうすると、そのファイルを作った人間の
    頭に電極を差し込んで意図を判別するしかなくなってしまいます。
    • Re:これはバグなのか? (スコア:3, おもしろおかしい)

      by elsee9 (15678) on 2006年07月08日 13時43分 (#974918) 日記
      まずは、API名をMeybeTextUnicodeにするべきかな。

      #誰も使わなそう
      親コメント
    • by kcg (26566) on 2006年07月08日 18時43分 (#975021) ホームページ 日記
      メモ帳自身でタイプして「名前を付けて保存」のダイアログで文字コードの指定をANSIとして保存した場合、ユーザーの意図もメモ帳自身の意図も明確です。

      そして、メモ帳自身がANSIで保存したつもりのファイルが開けないのを仕様とするのはおかしな話です。

      ファイルの中身を変更せずにファイル仕様をアプリケーションが特定する為の仕組みとして、昔から拡張子が用いられてきました。
      メモ帳が保存時に文字コード別の拡張子をふれば、メモ帳自身で開く場合に誤認識はなくせます。

      また、自動認識に頼る場合はANSI文字コードで保存する場合に「正しく認識できる内容かどうか」を判定することは容易いのですから、次回オープン時に文字化けしてしまう旨を警告する事も可能です。
      UNICODE文字をANSIで保存するときは、失われる文字があると警告しているのですから、何も警告せずに保存したデータを失ってしまうのは、ソフトウェアの重大な欠陥だといえます。

      親コメント
  • 上限サイズ (スコア:2, 興味深い)

    by snowy (9274) on 2006年07月07日 22時56分 (#974692) ホームページ 日記

    んGB(だっけ?)以上のファイル(テキスト)が開けないのは仕様だっけ?

    • Re:上限サイズ (スコア:3, 参考になる)

      by kumaryu (17923) on 2006年07月08日 1時45分 (#974805) 日記
      ファイルを全部メモリに展開するんで仕様です。
      アドレス空間が足りなくなりますからね。
      64bit版なら増えてるかも。
      確認はしてませんが。

      #Meまでの32kなんかの限界に比べれば全く問題無いと思います
      親コメント
    • by gunner (8999) on 2006年07月08日 0時25分 (#974768) ホームページ
      極端にでかいテキストは仕様以前に重すぎて事実上開けないので
      実質的な上限はもっと下かと。

      しかし、PocketPC版のPocketwordや同OS向けの大半のテキストエディタの
      あまりのダメさ加減に比べればまだまだかわいいモノではあります。

      #別のソフトで置き換えるから実害はあまり無いですが
      --
      #状況はいつも最悪、でもそれが当たり前
      親コメント
  • XP以外 (スコア:2, 興味深い)

    by SANITY (27416) on 2006年07月07日 23時00分 (#974698) 日記
    WindowsMeで試してみました。
    こちらは普通に開けましたよ、他の方はどうなのでしょう。
    しかし、この差ってなんだろう?

    //95系だと大丈夫なのだろうか…
  • Unicode (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2006年07月07日 23時14分 (#974712)
    「tiny bug for nerds」の最初の「ti」が「楴」という漢字に化けます。

    この漢字のコードポイントはU+6974ですが、tとiのASCIIコードがそれぞれ0x74と0x69です。

    というわけで、リトルエンディアンであることがわかりました。

    • by nexx (11440) <{bratkitty} {at} {gmail.com}> on 2006年07月07日 23時32分 (#974723)
      インテルって昔からリトルエンディアンですよw
      親コメント
      • Re:Unicode (スコア:1, 参考になる)

        by Anonymous Coward on 2006年07月08日 0時09分 (#974754)
        コメント元のACな人がどういう意味で「リトルエンディアン」であると言っているのか判りませんが・・・

        notepad.exeのヘルプを見ると判りますが、
        「ビッグエンディアンのUnicodeテキスト」ファイルも扱えるのですよ。
        (PowerPCベースのMacでそういうファイルが作れる、ようなことを書いてあります。)
        親コメント
      • by oku (4610) on 2006年07月08日 0時20分 (#974762) 日記
        細かい突っ込みで申し訳ありませんが、Itanium とか i960 って bi-endian じゃありませんでしたっけ?

        # まあ漏れなく little-endian をサポートしている、とは言えるのかも。
        # というわけで自衛策として BOM 付けると幸せになれるのでは、と
        # 非常に無意味なことを言ってみるテスト。

        親コメント
  • とりあえず (スコア:2, 参考になる)

    by Anonymous Coward on 2006年07月08日 0時45分 (#974781)
    Microsoft社関係のサイトだと、Sorting It All Out [msdn.com] (MSDN Blogs)があるんですが…

    だいぶ前から知られているのに、なぜ今ごろ?
  • サポート (スコア:2, 参考になる)

    by Anonymous Coward on 2006年07月08日 11時03分 (#974881)
    あります。 [microsoft.com]

    notepad.exe /a で回避の模様。

  • by SuperSouya (18827) on 2006年07月08日 0時10分 (#974755) 日記
    1つ目:楴
    2つ目:文字化け
    3つ目:ANSI規格外の文字
    4つ目:杵
    5つ目:映
    6つ目:ANSI規格外の文字
    7つ目:渠
    8つ目:牡
    9つ目:文字化け

    秀丸エディタ及びEmEditorでUTF-8を選択したら、そのまま保存が出来ました。

    --
    Super Souya
typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...