파일 이름으로 한자와 함께 Ruby를 사용한 재귀 디렉토리 목록
-
08-07-2019 - |
문제
디렉토리 내에서 파일 목록을 생성하고 싶습니다. 파일 이름 중 일부에는 한자가 포함되어 있습니다.
예 : [试验] .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"대신 대신 "TEXT".
중국어를 출력하기 위해 스크립트를 어떻게 변경할 수 있습니까?
해결책
루비는 코드에서 유니 코드를 다루고 있음을 알아야합니다. 다음과 같이 kcode를 사용하여 적절한 문자 인코딩을 설정하십시오.
$KCODE = 'utf-8'
UTF-8이 한자에게 충분하다고 생각합니다.
다른 팁
다음 코드는 더 우아하고 '찾기'가 필요하지 않습니다. 작업 디렉토리가 무엇이든 (또는 어떤 디렉토리를 입력하든)에서 파일 목록 (디렉토리는 아님)을 생성합니다.
Dir.entries(Dir.pwd).each do |x|
p x.encode('UTF-8') unless FileTest.directory?(x)
end
그리고 한 레벨의 사용을 파고 들기 위해 :
Dir.glob('*/*').each do |x|
p x.encode('UTF-8') unless FileTest.directory?(x)
end
나는 그것을 끝까지 내려갈 수있는 방법이 있다고 확신하지만 Dir.glob('**/*')
내가 옳은 것을 기억하면 전체 파일 시스템을 거치게됩니다.
제휴하지 않습니다 StackOverflow