# \[Bug #3179\] getc with text mode returns ASCII-8BIT

**URL:** <https://www.ruby-forum.com/t/bug-3179-getc-with-text-mode-returns-ascii-8bit/187246>\
**Category:** Development\
**Created:** [April 20, 2010, 3:00pm UTC](https://www.ruby-forum.com/t/bug-3179-getc-with-text-mode-returns-ascii-8bit/187246 "2010-04-20T15:00:06Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/f08c70/32.png) [@Yusuke\_E](https://www.ruby-forum.com/u/Yusuke_E)\
**Post date:** [April 20, 2010, 3:00pm UTC](https://www.ruby-forum.com/t/bug-3179-getc-with-text-mode-returns-ascii-8bit/187246/1 "2010-04-20T15:00:06Z")

</div>

Bug #3179: getc with text mode returns ASCII-8BIT  
[http://redmine.ruby-lang.org/issues/show/3179](http://redmine.ruby-lang.org/issues/show/3179)

e$B5/I\<\<Te(B: Yusuke E.  
e$B%9%F!\<%?%9e(B: Open, e$BM%@hEYe(B: Normal  
e$BC4Ev\<Te(B: Yui NARUSE, e$B%+%F%4%je(B: M17N, Target version: 1.9.2  
ruby -v: ruby 1.9.2dev (2010-04-20 trunk 27405) [i686-linux]

e$B1sF#$G$9!#e(B

e$B0J2\<$NF0:n$O0U?^E\*$G$7$g$&$+!#e(B

# coding: UTF-8

# “e$B$”$$$&e(B" e$B$H$$$&%U%!%$%k$r:n$ke(B

s = “e$B$”$$$&e(B"  
open(“foo.txt”, “wb”) {|f| f.write(s) }

# IO#read e$B$G0l5$$KFI$a$P4|BTDL$je(B

open(“foo.txt”, “rt”) {|f| p f.read } #=\> “e$B$”$$$&e(B"

# getc e$B$9$k$H%P%$%J%j$H$7$FFI$s$@46$8$K$J$ke(B

open(“foo.txt”, “rt”) do |f|  
p f.getc #=\> “\xE3”  
p f.getc #=\> “\x81”  
p f.getc #=\> “\x82”  
end

e$B3Fe(B getc e$B$Ge(B “e$B$“e(B” “e$B$$e(B” “e$B$&e(B”  
e$B$,5”$C$F$/$k$3$H$r4|BT$7$^$7$?!#e(B  
LANG e$B$Oe(B ja\_JP.UTF-8 e$B$G$9!#e(B

–  
Yusuke E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![Yusuke\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/f08c70/32.png) [@Yusuke\_E](https://www.ruby-forum.com/u/Yusuke_E)\
**Post date:** [April 20, 2010, 8:27pm UTC](https://www.ruby-forum.com/t/bug-3179-getc-with-text-mode-returns-ascii-8bit/187246/2 "2010-04-20T20:27:27Z")

</div>

e$B%A%1%C%He(B #3179 e$B$,99?7$5$l$^$7$?!#e(B (by Yui NARUSE)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r27426.  
Yusuke, thank you for reporting this issue.  
Your contribution to Ruby is greatly appreciated.  
May Ruby be with you.

* * *

[http://redmine.ruby-lang.org/issues/show/3179](http://redmine.ruby-lang.org/issues/show/3179)

---

<div class="post-metadata">

**Author:** ![Yusuke\_E](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/f08c70/32.png) [@Yusuke\_E](https://www.ruby-forum.com/u/Yusuke_E)\
**Post date:** [April 21, 2010, 3:29pm UTC](https://www.ruby-forum.com/t/bug-3179-getc-with-text-mode-returns-ascii-8bit/187246/3 "2010-04-21T15:29:02Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

e$B;d$N$H$3$m$G$Oe(B"e$B$“e(B” “e$B$$e(B” "e$B$&e(B"e$B$,JV$j$^$9$M!#e(B

minirubye$B$Oe(BLANGe$B$r8+$J$$$N$Ge(Bexternal\_encodinge$B$,e(BASCII-8BITe$B$K$Je(B  
e$B$j!“e(B”\xE3" “\x81” “\x82”  
e$B$,JV$j$^$9$,!"$3$l$OL@\<(E\*$Ke(BUTF-8e$B$re(B  
e$B;XDj$7$Fe(B

open(“foo.txt”, “rt:UTF-8”)

e$B$H$9$k$H!"$d$O$je(BUTF-8e$B$NJ8;zC10L$GF0:n$7$^$9!#e(B

In message “Re: [ruby-dev:41023] [Bug #3179] getc with text mode returns  
ASCII-8BIT”  
on Tue, 20 Apr 2010 21:58:03 +0900, Yusuke E.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B0J2\<$NF0:n$O0U?^E\*$G$7$g$&$+!#e(B  
|  
| # coding: UTF-8  
| # “e$B$”$$$&e(B" e$B$H$$$&%U%!%$%k$r:n$ke(B  
| s = “e$B$”$$$&e(B"  
| open(“foo.txt”, “wb”) {|f| f.write(s) }  
|  
| # IO#read e$B$G0l5$$KFI$a$P4|BTDL$je(B  
| open(“foo.txt”, “rt”) {|f| p f.read } #=\> “e$B$”$$$&e(B"  
|  
| # getc e$B$9$k$H%P%$%J%j$H$7$FFI$s$@46$8$K$J$ke(B  
| open(“foo.txt”, “rt”) do |f|  
| p f.getc #=\> “\xE3”  
| p f.getc #=\> “\x81”  
| p f.getc #=\> “\x82”  
| end  
|  
|e$B3Fe(B getc e$B$Ge(B “e$B$“e(B” “e$B$$e(B” “e$B$&e(B” e$B$,5”$C$F$/$k$3$H$r4|BT$7$^$7$?!#e(B  
|LANG e$B$Oe(B ja\_JP.UTF-8 e$B$G$9!#e(B
