e$B0J2<$N$h$&$K!"e(Beach_char e$B$,e(B “bc” e$B$H$+e(B
1e$BJ8;z$G$J$$$b$N$re(B yield
e$B$7$^$9!#e(B
% ./ruby -ve ‘s = “\xa4\xa2bc”.force_encoding(“euc-jp”); s.each_char
{|x| p x }’
ruby 1.9.0 (2008-01-19 revision 0) [i686-linux]
"e$B$“e(B”
“bc”
“c”
e$B%P%s%5%s$H?=$7$^$9!#e(B
On Jan 20, 2008, at 8:57 AM, Tanaka A. wrote:
e$B0J2<$N$h$&$K!"e(Beach_char e$B$,e(B “bc” e$B$H$+e(B 1e$BJ8e(B
e$B;z$G$J$$$b$N$re(B yield
e$B$7$^$9!#e(B
% ./ruby -ve ‘s = “\xa4\xa2bc”.force_encoding(“euc-jp”); s.each_char
{|x| p x }’
ruby 1.9.0 (2008-01-19 revision 0) [i686-linux]
"e$B$“e(B”
“bc”
“c”
e$BLdBj$OA0$N;z$ND9$5$,;H$o$l$F$$$?;v$G$9!#e(B
rb_enc_mbclene$B$N@5$7$$;H$$J}$O$h$/$o$+$i$J$$$G$9$1$I0J2<$N%Q%Ce(B
e$B%A$O$3$NLdBj$r=$@5$9$k$_$?$$$G$9!#e(B
Index: string.c
— string.c (revision 15142)
+++ string.c (working copy)
@@ -4595,17 +4595,14 @@
rb_encoding *enc;
RETURN_ENUMERATOR(str, 0, 0);
- ptr = RSTRING_PTR(str);
len = RSTRING_LEN(str);
- enc = rb_enc_get(str);
- n = rb_enc_mbclen(ptr, ptr + len, enc);
for (i = 0; i < len; i += n) {
- rb_yield(rb_str_subseq(str, i, n));
ptr = RSTRING_PTR(str);
len = RSTRING_LEN(str);
enc = rb_enc_get(str);
s = rb_enc_left_char_head(ptr, ptr + i, enc);
n = rb_enc_mbclen(s, ptr + len, enc);
- rb_yield(rb_str_subseq(str, i, n));
}
return str;
}
e$B%P%s%5%s$H?=$7$^$9!#e(B
On Jan 20, 2008, at 9:42 AM, Vincent I. wrote:
“c”
e$BLdBj$OA0$N;z$ND9$5$,;H$o$l$F$$$?;v$G$9!#e(B
rb_enc_mbclene$B$N@5$7$$;H$$J}$O$h$/$o$+$i$J$$$G$9$1$I0J2<$Ne(B
e$B%Q%C%A$O$3$NLdBj$r=$@5$9$k$_$?$$$G$9!#e(B
e$B$3$NA0$N%Q%C%A$Oe(Byielde$B$N8e$KJ8;zNs$ND9$5$r2~$a$F;29M$9$ke(B
e$B;v$rK:$l$F$$$^$7$?!#e(B
e$B$b$C$H@5$7$$%Q%C%A$O$3$N$h$&$G$9!'e(B
Index: string.c
— string.c (revision 15142)
+++ string.c (working copy)
@@ -4595,17 +4595,14 @@
rb_encoding *enc;
RETURN_ENUMERATOR(str, 0, 0);
- ptr = RSTRING_PTR(str);
len = RSTRING_LEN(str);
- enc = rb_enc_get(str);
- n = rb_enc_mbclen(ptr, ptr + len, enc);
for (i = 0; i < len; i += n) {
- rb_yield(rb_str_subseq(str, i, n));
ptr = RSTRING_PTR(str);
- len = RSTRING_LEN(str);
enc = rb_enc_get(str);
s = rb_enc_left_char_head(ptr, ptr + i, enc);
n = rb_enc_mbclen(s, ptr + len, enc);
- rb_yield(rb_str_subseq(str, i, n));
- len = RSTRING_LEN(str);
}
return str;
}