# Each\_char

**URL:** <https://www.ruby-forum.com/t/each-char/126605>\
**Category:** Development\
**Created:** [January 20, 2008, 8:58am UTC](https://www.ruby-forum.com/t/each-char/126605 "2008-01-20T08:58:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [January 20, 2008, 8:58am UTC](https://www.ruby-forum.com/t/each-char/126605/1 "2008-01-20T08:58:31Z")

</div>

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”

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [January 20, 2008, 9:43am UTC](https://www.ruby-forum.com/t/each-char/126605/2 "2008-01-20T09:43:01Z")

</div>

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;  
}

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [January 20, 2008, 10:43am UTC](https://www.ruby-forum.com/t/each-char/126605/3 "2008-01-20T10:43:31Z")

</div>

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;  
}
