[wxruby-users] Incompatible encoding from drag and drop?

Alex Fenton alex at pressure.to
Fri Mar 6 10:07:03 EST 2009


Christian Schmidt wrote:
> it really works on your box?
>   

Yes, the reason being that in OS X, file names are encoded in UTF-8, and 
this is the encoding of the string file name that wxRuby returns.
> Ok, on my system, when I use the example file, it throws:
>
> "No such file or directory - C:\ööäèé.txt"
>
> I'm working on XP-Home, SP3. German locales
> ruby -v: ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

On Windows, file names aren't encoded in UTF-8, but in a local encoding 
(for me, and probably you, CP1252). So the filename returned by wxRuby 
doesn't exist.

I think we should fix this so that wxRuby methods that accept or return 
file paths return those strings in an encoding that can be passed 
straight to Ruby's File/Dir methods.

In the meantime, you can work around this by manually converting the 
filepaths to the correct encoding before opening them:

require 'iconv' # at the top of your script

files.each do | file |
  if Wx::PLATFORM == 'WXMSW'
    file = Iconv.conv('CP1252', 'UTF-8', file)
  end
  .... process file as normal
end

alex


More information about the wxruby-users mailing list