パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Windows Vistaの文字セット問題」記事へのコメント

  • by Anonymous Coward on 2006年12月26日 11時19分 (#1082551)
    IE7には、0x5cまたは0x7cを含む文字が変わってしまうという文字処理問題がありますけど

    Windows Internet Explorer 7でのご利用について
    http://internetdisk.jp/rules/idisk_env.html [internetdisk.jp]

    これとは別物なのですか?
    • by yu_raku (419) on 2006年12月26日 11時49分 (#1082568)
      全然関係ない話だと思います。
      そこに出ている話は、Web上からダウンロードしてファイルの保存する際に、「\」(円・バックスラッシュ)と「|」(パイプ)がエスケープされるということのようです。
      そもそもそんなところにマルチバイト文字を使うことや、保存時のファイル名の初期値の定義はHTTPの規格外でしょうし、そのサービスがずいぶんとヤクザな仕様に感じます。
      親コメント
      • > そもそもそんなところにマルチバイト文字を使うことや、

        Webサーバーならまだしも、普通にファイルを扱う場合は、マルチバイト文字を使うことはよくあること。
    • by Stealth (5277) on 2006年12月26日 11時52分 (#1082570)

      0x5c は \、0x7c は | ですから、これ単体で見るとどちらも元々ファイル名として利用できない文字です。こちらは普通に Shift_JIS の取り扱い問題ではないでしょうか。

      なお、Web サーバ側にファイル名が Shift_JIS になるように置いてみた場合に 2byte 目が 0x5c となる文字で試してみたところ、確かに IE7 で名前は変わってしまいましたが、同じ文字でも UTF-8 ならコードが変わるためそのままの名前でダウンロードできました。なので、リンク先にある「※本現象は、インターネットディスクのWebビュー利用に限らず、一般サイトからのファイルダウンロードでも発生します。」はちょっと言いすぎな気がします。

      親コメント
      • もちろんUTF-8でもマルチバイト文字の一部として使用されている0x5c, 0x7cを「単体で見る」ことのナンセンスさは、十分理解した上でわざと書いているのでしょうね。

        なので、リンク先にある「※本現象は、インターネットディスクのWebビュー利用に限らず、一般サイトからのファイルダウンロードでも発生します。」はちょっと言いすぎな気がします。

        全くそう思えません。internetdiskに限らず、shift-jisで応答を返す類似のWebサイト全般について同じことが言える、というのは事実ですよね。

        Atsushi Eno
        • by Stealth (5277) on 2006年12月26日 13時10分 (#1082608)

          ナンセンスさに関しては、「\\||.zip」なんてファイル名を付けることのナンセンスさと同じだという程度には理解していますよ。

          ところで、UTF-8 の場合、マルチバイト文字は全て 8bit 目が 1 になるはずなのですが、マルチバイト文字の一部に 0x5c や 0x7c が存在するパターンってあるのでしょうか。

          それと、Shift_JIS で応答を返したところで正確にファイル名を要求するにはパーセントエスケープ (URL エスケープ) で参照する必要があるのですが、これはつまりファイルシステム上に Shift_JIS で記録する必要があります。

          で、日本語のファイル名を Shift_JIS で Web 向けに公開する際に付けるのって一般的な事なのでしょうか。

          親コメント
          • Yahooのブリーフケースとかで普通に日本語ファイルでアップしてたりするんじゃない?

          • ところで、UTF-8 の場合、マルチバイト文字は全て 8bit 目が 1 になるはずなのですが、マルチバイト文字の一部に 0x5c や 0x7c が存在するパターンってあるのでしょうか。


            おっと、おっしゃる通り、これはutf-8の正確な実装においてはあり得ないですね。失礼しました。


            で、日本語のファイル名を Shift_JIS で Web 向けに公開する際に付けるのって一般的な事なのでしょうか。


            望ましいかどうかは別として、他にあり得ないと言って文句を言える程ではないと思います。

            Atsushi Eno
            • by Stealth (5277) on 2006年12月26日 21時49分 (#1082951)

              特に文句を言うつもりはないのですが、既に解が分かっている (Shift-JIS 以外の 0x5c や 0x7c といったコードを利用しない) 問題なので、既存の移行は大変かもしれませんが、新規のものや移行計画は立てやすいかと思います。

              一応、一段噛ませる (応答を UTF-8 に変換するものの、ファイルへのアクセスは Shift_JIS に変換する等) 形でこの問題はサーバサイドで回避できますから。

              もちろん、うまくハンドリングできない IE7 の問題なのは間違いありませんが、今後主流になるのが見えているブラウザに対し、今から対応を考えるのは商業的に悪くない筈なので。(むしろ放置する方が問題)

              親コメント
        • 「ファイル名をshift-jisで応答を返す類似のWebサイト」というのがそもそも一般的なWebサイトでは無いかと。
          一般的なWebサイトではWeb上のファイル名、特にダウンロードされるファイルのファイル名はasciiのみで構成されています。
          • by nim (10479) on 2006年12月27日 12時02分 (#1083256)
            ダウンロードするファイル名は普通、HTTP の Content-disposition ヘッダで指定すると思いますが、
            これを日本語にしたい場合、IE6のためには(他のバージョンは試してないからわからない)SJISにする必要が
            あります。(Firefox はUTF-8)

            いずれにしろ MIME エンコードする必要があるため、「噂」が入ったファイル名も手元の環境では問題なくダイウンロードできました。このサイトは生SJISで返すのかもしれませんが、HTTPヘッダに生でマルチバイト文字列を入れるのはRFC違反だったはずです。
            親コメント
            • by Stealth (5277) on 2006年12月27日 14時59分 (#1083334)

              なるほど、そのように検証されましたか。私は単に Web サーバの領域に "噂.zip" を置いて試しました。パーセントエスケープでの形で参照したり、directory index での参照 (パーセントエスケープと同等ですが) で確認し、"[1].zip" なんてファイル名にされるのは確認しました。

              Content-Disposition では問題が無いのであれば、普通に作られているダウンロードサイトでは問題がなさそうですね。

              親コメント

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

処理中...