ruby - 使用 Ruby 在文件名中包含中文字符的递​​归目录列表

标签 ruby file unicode directory-listing cjk

我想生成一个目录中的文件列表。部分文件名包含汉字。

例如:[测试].Test.txt

我正在使用以下代码:

require 'find'
dirs = ["TestDir"]
for dir in dirs
    Find.find(dir) do |path|
    if FileTest.directory?(path)
    else
        p path
    end
    end
end

运行脚本会生成一个文件列表,但中文字符会被转义(替换为反斜杠后跟数字)。使用上面的示例文件名将产生:

“TestDir/[\312\324\321\351]Test.txt”而不是“TestDir/[测试].Test.txt”。

如何修改脚本输出汉字?

最佳答案

Ruby 需要知道您正在处理代码中的 unicode。使用 KCODE 设置适当的字符编码,如下所示:

$KCODE = 'utf-8'

我认为 utf-8 对汉字来说已经足够好了。

关于ruby - 使用 Ruby 在文件名中包含中文字符的递​​归目录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/309539/

相关文章:

java - 错误更改系统找不到指定的文件

java - 在 *Unicode 代码点* 上按字典顺序比较两个 Java 字符串的首选方法是什么?

php - 模拟尚未实现的 <bdi> HTML 标签的方法?

iOS stringByPaddingToLength 因心脏字符而失败

ruby - 在给定端口上启动和停止进程的更好方法

ruby - 查找文件中最后一行的开头?

c - 在 C 中使用 fscanf() 读取文件

html - 纯 css 无法正确加载到 Ruby on Rails 中

ruby - bundle 安装时出现 json gem 安装错误

android - 如何获取我用 Intent 选择的目录的路径并将其用作文件路径?