[ruby-core:117426] [Ruby master Misc#20406] Question about Regexp encoding negotiation
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2024-04-03 09:57:59 UTC
List:
ruby-core #117426
Issue #20406 has been updated by Eregon (Benoit Daloze).
> By default, a regexp with only US-ASCII characters has US-ASCII encoding:
I was wondering what kind of check is used for that and it seems to be chec=
king the Regexp source when building it (makes sense):
```
$ ruby -e 'p /a/.encoding'
#<Encoding:US-ASCII>
$ ruby -e 'p /a#{}b/.encoding'
#<Encoding:US-ASCII>
$ ruby -e 'p /a#{"c"}b/.encoding'
#<Encoding:US-ASCII>
$ ruby -e 'p /a#{"=E9"}b/.encoding'
#<Encoding:UTF-8>
```
----------------------------------------
Misc #20406: Question about Regexp encoding negotiation
https://bugs.ruby-lang.org/issues/20406#change-107801
* Author: andrykonchin (Andrew Konchin)
* Status: Open
----------------------------------------
I am wondering what are the rules to calculate Regexp literal encoding in c=
ase an encoding modifier is specified.
>From the documentstion:
> By default, a regexp with only US-ASCII characters has US-ASCII encoding:
> ...
> A regular expression containing non-US-ASCII characters is assumed to use=
the source encoding. This can be overridden with one of the following modi=
fiers.
> //n ...
> //u ...
> //e ...
> //s ...
Looking at the following examples I would assume that these rules are follo=
wed except one case:
```ruby
p /\xc2\xa1/e .encoding # EUC-JP
p /#{ }\xc2\xa1/e .encoding # EUC-JP
p /a/e .encoding # EUC-JP
p /a #{} a/e .encoding # EUC-JP
p /#{} a/e .encoding # US-ASCII
```
The last Regexp `/#{} a/e` is supposed to have `EUC-JP` encoding but has `U=
S-ASCII`. So I am wondering what rule is applied in this case.
--=20
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-c=
ore.ml.ruby-lang.org/