From: "mame (Yusuke Endoh)" Date: 2012-12-09T21:40:38+09:00 Subject: [ruby-core:50712] [ruby-trunk - Bug #1685] Some windows unicode path issues remain Issue #1685 has been updated by mame (Yusuke Endoh). Description updated Usa-san, what's the status? -- Yusuke Endoh ---------------------------------------- Bug #1685: Some windows unicode path issues remain https://bugs.ruby-lang.org/issues/1685#change-34559 Author: spatulasnout (B Kelly) Status: Assigned Priority: Normal Assignee: usa (Usaku NAKAMURA) Category: M17N Target version: 2.0.0 ruby -v: ruby 1.9.2dev (2009-06-24) [i386-mswin32_71] =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 -- http://bugs.ruby-lang.org/