From: usa@... Date: 2015-08-03T02:07:41+00:00 Subject: [ruby-core:70222] [Ruby trunk - Bug #11412] [Rejected] Filename encoding issues (Windows) Issue #11412 has been updated by Usaku NAKAMURA. Status changed from Open to Rejected It's spec. Dir.foreach returns the filenames with the filesystem encoding (in your environment, it may be cp850) for backword compatibility. You can specify encoding option to Dir.foreach: ~~~ruby Dir.foreach('.', encoding: 'utf-8') do |entry| ~~~ ---------------------------------------- Bug #11412: Filename encoding issues (Windows) https://bugs.ruby-lang.org/issues/11412#change-53650 * Author: Daniel Frank * Status: Rejected * Priority: Normal * Assignee: * ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x64-mingw32] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Ruby is apparently unable to find files it just told me are there (containing japanese characters). Demo code: Dir.foreach('.') do |entry| puts "#{entry} exists? " + File.exist?(entry).to_s end Output: C:\tmp\test\filenames>C:\tmp\rubybackup\ruby-2.2.2-x64-mingw32\bin\ruby.exe test.rb . exists? true .. exists? true a.md exists? true b.txt exists? true test.rb exists? true ???.txt exists? false Directory contents according to cmd.exe/dir: 02.08.2015 22:18 . 02.08.2015 22:18 .. 02.08.2015 22:04 0 a.md 02.08.2015 22:04 0 b.txt 02.08.2015 22:20 87 test.rb 02.08.2015 22:04 0 ???.txt The undisplayable filename contains japanese characters and should read: ���������.txt C:\tmp\test\filenames>chcp Active code page: 850 Attached zip file contains all files necessary to see the problem (with the exception of the script the files have a size of zero bytes). ---Files-------------------------------- filenames.zip (611 Bytes) -- https://bugs.ruby-lang.org/