Ruby 1.8.7 Accessing files with non-latin names

Hello Forum,

The newer ruby 193 has no problem with non-latin file names

$ c:/Ruby193/bin/ruby -e ‘Dir.glob(“folder/*”).each{|f| puts f }’
folder/человеку медведь

$ c:/Ruby193/bin/ruby -e ‘Dir.glob(“folder//”).each{|f| puts f }’
folder/человеку медведь/свиньи

But the older ruby 187 does not deal well with these files:

$ c:/Ruby187/bin/ruby -e ‘Dir.glob(“folder/*”).each{|f| puts f }’
folder/??? ???

Is there a fix for this, apart from upgrading to ruby 193 ?

  • Bartels

On Sat, 02 Mar 2013 19:03:42 +0100, Bart E. [email protected]
wrote:

Most probably the encodings of the filenames you receive from Dir.glob
are different than the encoding your console uses. (Although I have no
idea which encoding these might be.)

You might be able to use Iconv for converting them.

Bartosz Dziewoński wrote in post #1099866:

On Sat, 02 Mar 2013 19:03:42 +0100, Bart E. [email protected]
wrote:

Most probably the encodings of the filenames you receive from Dir.glob
are different than the encoding your console uses. (Although I have no
idea which encoding these might be.)

You might be able to use Iconv for converting them.

Hmm, thanks for your time, but encoding it is not: our poor ‘man bear’
is translated into a series of 0xf3 characters, with a 0x02 in between.

$ c:/Ruby187/bin/ruby -e ‘Dir.glob(“folder/").each{|f| puts
f.unpack("h
”) }’
66f6c6465627f2f3f3f3f3f3f3f3f302f3f3f3f3f3f3f3

Plus, I get nothing where I would expect exactly one file a level
deeper:

$ c:/Ruby187/bin/ruby -e ‘puts Dir.glob(“folder//”).each{|f| puts f
}.size’
0

The same for 193 gives me my file:

$ c:/Ruby193/bin/ruby -e ‘puts Dir.glob(“folder//”).each{|f| puts f
}.size’
folder/человеку медведь/свиньи
1

More ideas?

  • Bartels.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs