From: usa@... Date: 2014-04-07T18:50:53+00:00 Subject: [ruby-core:61897] [ruby-trunk - Bug #1685] [Closed] Some windows unicode path issues remain Issue #1685 has been updated by Usaku NAKAMURA. Status changed from Assigned to Closed This ticket is too old and too various problems. Now Thomas investigates many things and is making some new tickets. (Thank you!) Please refer to them from now on. ---------------------------------------- Bug #1685: Some windows unicode path issues remain https://bugs.ruby-lang.org/issues/1685#change-46105 * Author: B Kelly * Status: Closed * 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) -- https://bugs.ruby-lang.org/