[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