[ruby-dev:31784] Re: `scan': character encodings differ (ArgumentError)

From: Kouhei Sutou <kou@...>
Date: 2007-09-15 03:03:38 UTC
List: ruby-dev #31784
須藤です。

# あぁ、The RWikiに書くようなことだったのかも。。。

In <20070915022347.60067E02B5@mail.bc9.jp>
  "[ruby-dev:31782] Re: `scan': character encodings differ (ArgumentError)" on Sat, 15 Sep 2007 11:23:47 +0900,
  Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:

> At Sat, 15 Sep 2007 10:23:51 +0900,
> Kouhei Sutou wrote in [ruby-dev:31781]:
> > trunkでは、encodingがUS-ASCIIな文字列をkcodeが"utf8"な正規表
> > 現でscanしようとするとArgumentErrorが発生します。
> > 
> >   % /tmp/local/bin/ruby -v -e '"x".scan(/x/u)'
> >   ruby 1.9.0 (2007-09-14 patchlevel 0) [x86_64-linux]
> >   -e:1:in `scan': character encodings differ (ArgumentError)
> >           from -e:1:in `<main>'
> > 
> > これは一時的なものなのでしょうか?それとも、意図的な動作なの
> > でしょうか?
> 
> [ruby-dev:31715]からのスレッドでも議論していますが、結論はまだで
> す。

あまり理解できていない気がするのですが、そのスレッドはリテラ
ルの文字列のエンコーディングだと思っていました。

これは、異なるエンコーディングのStringとRegexpができるか、だ
と思いました。思ったのですが、できますね。

というか、string.c:scan_once()ではrb_enc_check()ではなくて、
rb_enc_get(str)で十分な気がします。


> とりあえず、手元ではエラーにならないのは、上記のメールに添付した
> パッチが影響しているような気がします。

たぶん、rb_enc_asciicompact()のおかげのような気がします。


まつもとさんが直してくれるということなのでもう少し待つことに
します。ありがとうございました。

In This Thread