From: Hiroshi Shirosaki Date: 2011-12-08T14:54:09+09:00 Subject: [ruby-core:41542] [ruby-trunk - Bug #5714] Unexpected error of STDIN#read with non-ascii input on Windows XP Issue #5714 has been updated by Hiroshi Shirosaki. File read_binmode.patch added It seems read with length should always be binary mode. #5562 patch lacks this point. I think this patch fixes above issue. It seems OK that stdin is default binary mode, but if stdout and stderr are default binary mode, newline conversion breaks. We can confirm this by the following tests. make test-all TESTS="ruby/test_io_m17n.rb" ---------------------------------------- Bug #5714: Unexpected error of STDIN#read with non-ascii input on Windows XP http://redmine.ruby-lang.org/issues/5714 Author: Heesob Park Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: - When the input contains non-ascii character, STDIN#read raised Permission denied or Invalid argument error with MSVC compiled version on Windows XP. C:\work>ruby -ve 'p STDIN.read(5)' ruby 2.0.0dev (2011-12-05 trunk 33955) [i386-mswin32_100] ������abcd -e:1:in `read': Permission denied - (Errno::EACCES) from -e:1:in `
' C:\>irb irb(main):001:0> STDIN.read(5) ������abcd Errno::EINVAL: Invalid argument - from (irb):1:in `read' from (irb):1 from c:/usr/bin/irb.bat:19:in `
' If the input is ascii only, STDIN.read works fine. C:\work>ruby -ve 'p STDIN.read(5)' ruby 2.0.0dev (2011-12-05 trunk 33955) [i386-mswin32_100] abcdefg "abcde" C:\>irb irb(main):001:0> STDIN.read(5) abcdefg => "abcde" It is odd but the Mingw compiled version works fine. C:\work>ruby -ve 'p STDIN.read(5)' ruby 2.0.0dev (2011-12-05 trunk 33955) [i386-mingw32] ������abcde "\xC7\xD1\xB1\xDBabc" And Ruby 1.9.3p0 works fine. C:\>ruby -ve 'p STDIN.read(5)' ruby 1.9.3p0 (2011-10-30 revision 33570) [i386-mswin32_100] ������abcd "\xC7\xD1\xB1\xDBabc" -- http://redmine.ruby-lang.org