我正在使用
Dir.entries("myFolder")
获取所有文件名。问题是,我得到了占位符而不是一些特殊字符。如果文件名包含Č,Š等特殊字符,则会发生错误。
我已经指定了文件编码:
#encoding: utf-8.
在Linux上,这种方法很有效,在Windows上却没有。
irb中的测试结果:
[".", "..", "MA\xC8KA.png", "PES.png", "VLAK.png", "\x8EOGA.png"]
应该是:
[".", "..", "MAČKA.png", "PES.png", "VLAK.png", "ŽOGA.png"]
除了替换这些字符外,还有其他方法可以解决这个问题吗?
-------- EDIT -----------
irb(main):001:0> Dir.entries("myFolder").map {|e| e.force_encoding('Windows-1250').encode('UTF-8')}
=> [".", "..", "MA\u010CKA.png", "PES.png", "VLAK.png", "\u017DOGA.png"]
irb(main):002:0> Dir.entries("myFolder").map {|e| e.force_encoding('UTF-8')}
=> [".", "..", "MA\xC8KA.png", "PES.png", "VLAK.png", "\x8EOGA.png"]
-------- EDIT -----------
---------编辑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 -------------
谢谢。
此致 西巴
答案 0 :(得分:1)
我在读取目录中的文件时通过传递编码选项解决了这个问题:
Dir.entries("myFolder", encoding: "utf-8")
稍后更改或强制更改编码的任何尝试都将失败。
提醒自己更仔细阅读文件......
的问候, 西巴