On 2014/04/03 23:07, thomas / thomthom.net wrote:
> Issue #1685 has been updated by Thomas Thomassen.

> In Ruby 2.0 there appear to still be several issues with Ruby and Unicode characters in filenames. Dir.entries fail, load and require fail. __FILE__ has the wrong encoding. I see some things slated for Ruby 2.2, but not everything.

If you know of anything that's not yet in Ruby 2.2, please tell us, best 
by opening a bug for each issue.

Regards,   Martin.


> ----------------------------------------
> Bug #1685: Some windows unicode path issues remain
> https://bugs.ruby-lang.org/issues/1685#change-46061
>
> * Author: B Kelly
> * Status: Assigned
> * Priority: Normal
> * Assignee: Usaku NAKAMURA
> * Category: M17N
> * Target version: next minor
> * ruby -v: ruby 1.9.2dev (2009-06-24) [i386-mswin32_71]
> * Backport:
> ----------------------------------------
> =begin
>   Hi,
>
>   I see some nice progress has been made in unicode path
>   handling on windows.
>
>   The following tests are not exhaustive, but do reveal some
>   remaining issues.
>
>   Everything below "NOT WORKING" fails in one way or another.
>
>   Regards,
>
>   Bill
>
>   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   # encoding: UTF-8
>
>   # Test unicode path/dir handling on windows
>
>   require 'test/unit'
>
>   class TestUnicodeFilenamesAndPaths < Test::Unit::TestCase
>     def setup
>       tmpdir = ENV['TEMP'] || "C:/TEMP"
>       Dir.chdir tmpdir
>       puts Dir.pwd
>       testdir = "ruby_unicode_test"
>       Dir.mkdir testdir unless test ?d, testdir
>       Dir.chdir testdir
>       puts Dir.pwd
>     end
>
>     def test_unicode_paths
>       fname_resume = "R\xC3\xA9sum\xC3\xA9".force_encoding("UTF-8")
>       fname_chinese = "\u52ec\u52ee\u52f1\u52f2.txt"
>       dname_chinese = "\u52ec\u52ee\u52f1\u52f2"
>
>       assert_equal( "UTF-8", fname_resume.encoding.name )
>       File.open(fname_resume, "w") {|io| io.puts "Hello, World"}
>
>       assert_equal( "UTF-8", fname_chinese.encoding.name )
>       File.open(fname_chinese, "w") {|io| io.puts "Hello, World"}
>
>       dat = File.read(fname_chinese)
>       assert_equal( "Hello, World\n", dat )
>
>       files = Dir["*"]
>       assert( files.include? fname_resume )
>       assert( files.include? fname_chinese )
>
>   # NOT WORKING:
>       Dir.rmdir dname_chinese rescue nil
>       Dir.mkdir dname_chinese
>       test ?d, dname_chinese
>       Dir.chdir dname_chinese
>       cwd = Dir.pwd
>       assert( cwd[(-dname_chinese.length)..-1] == dname_chinese )
>       Dir.chdir ".."
>
>       x = File.stat(fname_resume)
>       x = File.stat(fname_chinese)
>       x = File.stat(dname_chinese)
>
>       assert( File.exist? fname_resume )
>       assert( File.exist? fname_chinese )
>       assert( test(?f, fname_resume) )
>       assert( test(?f, fname_chinese) )
>
>       files = Dir[fname_resume]
>       assert_equal( fname_resume, files.first )
>       files = Dir[fname_chinese]
>       assert_equal( fname_chinese, files.first )
>       files = Dir[dname_chinese]
>       assert_equal( dname_chinese, files.first )
>     end
>   end
> =end
>
>
> ---Files--------------------------------
> spatulasnout-unicode-mkdir-diffs.txt (3.56 KB)
> test_io_unicode_paths.rb (925 Bytes)
>
>