Ruby 目录条目无法识别特殊字符



我用

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")

任何更改或强制更改编码的尝试都失败了。

提醒自己更仔细地阅读文档…

问候,西巴

最新更新