我用
Dir.entries("myFolder")
获取所有文件名。问题是,我得到的不是一些特殊字符,而是它们的占位符。如果文件名包含特殊字符,如Č、Š等,则会发生错误。
我已经指定了文件编码:
#encoding: utf-8.
在linux上可以,在Windows上不行。
irb测试结果:
[".", "..", "MAxC8KA.png", "PES.png", "VLAK.png", "x8EOGA.png"]
应该是:
[".", "..", "MAČKA.png", "PES.png", "VLAK.png", "ŽOGA.png"]
如果有的话,除了替换这些字符之外,还有其他方法来修复这个问题吗?
——编辑 -----------
irb(main):001:0> Dir.entries("myFolder").map {|e| e.force_encoding('Windows-1250').encode('UTF-8')}
=> [".", "..", "MAu010CKA.png", "PES.png", "VLAK.png", "u017DOGA.png"]
irb(main):002:0> Dir.entries("myFolder").map {|e| e.force_encoding('UTF-8')}
=> [".", "..", "MAxC8KA.png", "PES.png", "VLAK.png", "x8EOGA.png"]
——编辑 -----------
--------- 编辑2 -------------
#encoding: utf-8
require 'green_shoes'
Shoes.app do
button "Get sample image name" do
@words_images = Dir.entries("myFolder").each {|word| word.gsub!(".png", "")}
@words_images.delete(".")
@words_images.delete("..")
@test.append{para @words_images.sample}
end
@test = stack do
end
end
--------- 编辑2 -------------
谢谢。
问候,西巴
我通过在读取目录中的文件时传递encoding选项来解决这个问题:
Dir.entries("myFolder", encoding: "utf-8")
任何更改或强制更改编码的尝试都失败了。
提醒自己更仔细地阅读文档…
问候,西巴