使用带有文本名中的中文字符的Ruby的递归目录列表

p h*_*p h 5 ruby unicode file 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
Run Code Online (Sandbox Code Playgroud)

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

"TestDir/[\ 312\324\321\351] Test.txt"而不是"TestDir/[试验] .Test.txt".

如何更改脚本以输出中文字符?

rpa*_*abi 4

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

$KCODE = 'utf-8'
Run Code Online (Sandbox Code Playgroud)

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