成瀬です。
# -*- coding: UTF-8 -*-
str = "あいうえお"
m = str[/./]
p m.encoding #=> <Encoding:ASCII-8BIT>
となるのですが、ここは UTF-8 文字列を返すべきではないでしょうか。たぶん
単に rb_str_new4() なだけっぽいですが。
Index: string.c
===================================================================
--- string.c (リビジョン 13711)
+++ string.c (作業コピー)
@@ -307,6 +307,7 @@
}
else if (STR_ASSOC_P(orig) || STR_EMBED_P(orig)) {
str = str_new(klass, RSTRING_PTR(orig), RSTRING_LEN(orig));
+ rb_enc_copy(str, orig);
}
else {
str = str_new4(klass, orig);
また、
ru = Regexp.new("\xE3\x81\x82".force_encoding('UTF-8'))
ru.encoding #=> <Encoding:UTF-8>
p ru.to_s.encoding # => <Encoding:ASCII-8BIT>
re = Regexp.new("\x82\xA0".force_encoding('EUC-JP'))
re.encoding #=> <Encoding:EUC-JP>
rr = Regexp.union(ru,re) #=> /(?-mix:\343\201\202)|(?-mix:\202\240)/
rr.encoding #=> <Encoding:ASCII-8BIT>
となるのですが、これは意図した動作でしょうか
--
NARUSE, Yui <naruse / airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA