From: Tanaka Akira Date: 2008-01-01T13:54:23+09:00 Subject: [ruby-dev:32912] Re: NKF,Kconv In article <4779C129.9060907@airemix.com>, "NARUSE, Yui" writes: > メソッドの趣旨からいってバグだと思います。一応str.dup.force_encoding > (str.encoding) で直りますが、ASCII-8BIT の正規表現は Shift_JIS や UTF-8 > にもマッチさせたいような。その辺どうなのでしょうね。 その要求はすでに何回かあって、どうも珍しくないようですが、文 字の半分とかにマッチされると MatchData#begin あたりが定義で きないので、中身のバイト列を扱いたいのであればあきらめて str.dup.force_encoding("ASCII-8BIT") してください。 ただ、これはメソッドの趣旨が文字列をバイト列として解釈すると いうものだった場合です。もしそういう趣旨であれば、 force_encoding を使うのはその趣旨にそったものだといえるでしょ う。 しかし、引数にはバイト列を ASCII-8BIT な文字列として渡すこと、 という仕様にすれば、変更の必要はないのかもしれません。 また、例えば、バイト列が ISO-8859-1 に対応して UTF-8 に変換 されたものを考えて元のバイト列を扱いたいというのであればそれ はそれで違った方法が必要でしょう。 結局、バイト列をどう表現してメソッドに渡すかという仕様の問題 になります。つまり、String がバイト列から文字列に変わってし まったので、それに対応した仕様を検討しなければならないという ことでしょう。 -- [田中 哲][たなか あきら][Tanaka Akira]