登录

为什么ruby遍历中文文件时输出的结果为乱码?

各位ruby for su的大神们~~为什么当遍历目标文件的脚本 用su自带的ruby编辑器运行时 在选择到中文名称的files时会出现puts 乱码 但是使用SciTE.exe运行的时候puts 的就是文件的中文名。
def traverse_dir(file_path)
if File.directory? file_path
Dir.foreach(file_path) do |file|
if file !="." and file !=".." and !file.include? "su for max"
traverse_dir(file_path+"/"+file)
end
end
else
puts "File:#{File.basename(file_path)}"
end
end


>ruby 文件扫描.rb
File:爱的.skp
File:23456.skp
File:34567.skp
File:45678.skp
File:56789.skp
File:67890.skp
>Exit code: 0

这个是用SciTe运行后的puts的结果

File:°®µÄ.skp
File:23456.skp
File:34567.skp
File:45678.skp
File:56789.skp
File:67890.skp

这个是用su自带的ruby运行后的结果
用su自带的ruby运行后输出的中文名字就为乱码了。

1 个回复

  • 。。已经解决了,只要将File.basename(file_path)后面加上 .encode('utf-8') 将其变成utf-8模式的编码就可以了。
    登录进行回复