From: Martin Duerst Date: 2008-11-13T14:56:36+09:00 Subject: [ruby-dev:37085] Re: [Feature #747] /\A/u ignores BOM At 19:31 08/11/12, Urabe Shyouhei wrote: >卜部です。 > >Tietew さんは書きました: >> On Wed, 12 Nov 2008 17:49:47 +0900 >> In article <491a994c33f6e_95d7d550be42e4@redmine.ruby-lang.org> >> [[ruby-dev:37075] [Feature #747] /\A/u ignores BOM] >> Shyouhei Urabe wrote: >> >> >>> /\A/uがBOMにヒットしないのが嬉しくないです。普通、BOMはあるとすれば文字列 >の先頭に付いていることが多いので、/\A/uがBOMにヒットするのが自然だと思います。 >>> >> >> http://www.ietf.org/rfc/rfc3629.txt >> RFC 3629 を読むと、内部処理には U+FEFF を特別扱いしないことを推奨してい >> るように思いますが、どうなんでしょう。 >> >同じRFCに、 > >It is therefore RECOMMENDED to avoid stripping an initial U+FEFF >interpreted as a signature without a good reason, to ignore it instead >of stripping it when appropriate (such as for display) and to strip it >only when really necessary. これはファイル全体の場合には、例えば電子署名などの関係でよく分かりますが、 スクリプトなどでファイルをこま切れして処理するときにはなかなか難しいです。 基本的には読み込みの時に BOM を除去し、必要でしたらその有無を記憶し、 出力に必要に応じて未だ付けるのが正しいと思います。そうしないと処理によって BOM が先頭からファイルの内部に移動するなど意味のない結果になってしまいます。 極端に言うと /\A\uFEFF/u はどういう場合にマッチすべきでしょうか。 宜しくお願いします。 Martin. >とあります。専門家ではないので外してるかもしれませんが、この(such as for >display)のところに正規表現マッチも含まれるんじゃないでしょうか。 #-#-# Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University #-#-# http://www.sw.it.aoyama.ac.jp mailto:duerst@it.aoyama.ac.jp