On Jul 5, 2007, at 11:32 AM, johan556 / gmail.com wrote:

> On 7/5/07, John Joyce <dangerwillrobinsondanger / gmail.com> wrote:
>> On Jul 5, 2007, at 8:00 AM, johan556 / gmail.com wrote:
>> >
>> > I use Ruby on Windows, and tried to remove all files in a directory
>> > with the code given below. But if the directory contains files with
>> > filenames having non-western characters the operation fails.
>> >
>>
>> First make sure you set the KCODE
>>
>
> Using KCODE does not change anything. I have tried:
>
>  $ ruby -Ke rm-files.rb
>  $ ruby -Ks rm-files.rb
>  $ ruby -Ku rm-files.rb
>  $ ruby -Ka rm-files.rb
>  $ ruby -Kn rm-files.rb
>
> The problematic files are stored with a name that is a 16-bit
> character string in NTFS (what I called Unicode in my earlier mail,
> perhaps one should call it "almost UTF-16" or UCS-2, I don't know the
> finer details). Anyway, I don't think setting KCODE solves my problem.
>

Translation from utf-16 and utf-8 shouldn't be a problem.
Check out unicode.org for more on this than you really want to, or  
there is a nice blog article at joelonsoftware

>> Try using the chars class from ActiveSupport (yes it is a gem that is
>> part of Rails but it provides a great deal of utf-8 processing)
>>
>
> See above. I don't think NTFS stores Unicode filenames in UTF-8.
>
> My assumption when starting to look at this problem was: that a
> filename that I got from one function (Dir.entries) would be directly
> usable in another function (File.unlink). That was quite naive I
> realize :)
>
> But it is still a real problem. As it is now, FileUtils.rm_r does not
> work on an arbitrary file-tree. As soon as it contains a file with
> "wrong" filename it fails. Maybe this is just a consequence of the way
> Ruby is ported to Windows.
>
> /Johan Holmberg
>

Some file utilities are specifically non-windows. That may be part of  
the problem you are having.
Many of those file utilities out there are Ruby versions of utilities  
found on *nix systems. Sorry about that.
Much of that is documented in the pickaxe book (v.2) in the second  
half of the book. (sorry again, I'm not saying RTFM, just that it is  
noted there.)

The win32utils will hopefully do the job. Let us know what works!  
This kind of problem is common for lots of people.