del*_*tor 10 ruby unicode internationalization windows-7
我有一段看起来像这样的代码:
Dir.new(path).each do |entry|
puts entry
end
Run Code Online (Sandbox Code Playgroud)
当我在列出的目录中有一个名为こんにちは世界.txt的文件时出现问题.在Windows 7机器上,我得到输出:
???????.txt
Run Code Online (Sandbox Code Playgroud)
从Google上搜索,在Windows上正确读取此文件名似乎是一项不可能完成的任务.有什么建议?
小智 10
我遇到了同样的问题,并且想出了如何在Windows中以UTF-8获取目录条目.以下对我有用(使用Ruby 1.9.2p136):
opts = {}
opts[:encoding] = "UTF-8"
entries = Dir.entries(path, opts)
entries.each do |entry|
# example
stat = File::stat(entry)
puts "Size: " + String(stat.size)
end
Run Code Online (Sandbox Code Playgroud)
您无法使用纯 ruby(1.8 或 1.9.1),因为它使用 ANSI 版本的 Windows API。
Ruby 1.9.2 似乎将支持 Windows 上的 Unicode 文件名。该错误报告以 1.9.2 为目标。根据该公告, Ruby 1.9.2 将于 2010 年 7 月底发布。
如果您确实需要更早,您可以尝试直接通过或使用FindFirstFileW等。Win32API.newwin32-api
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |