2012-03-02 3 views
0

는이 코드가 있습니다file.truncate가 ruby에서 파일을 0으로 변환하는 이유는 무엇입니까?

File.open(name, 'r+') do |f| 
     new_file = f.read.sub /ApplicationController/, 'AdminController' 
     f.truncate 0 
     f.write new_file 
     f.close 
    end 

을하고 그 다음, AdminController로와 ApplicationController을 대체 파일을 절단 한 다음 새로운 내용을 기록하고 닫습니다하기로했다. 이 파일을 절단 한 다음에 쓸 때

그러나, 그것은 다음과 같습니다

0000 0000 0000 0000 0ef3 

등 ...

그래서 16 진수 파일을 변환됩니다 잘라. 나는 UTF-8로 그것을 필요로한다. 파일을 쓰기 전에 파일이 UTF-8인지 어떻게 확인할 수 있습니까?

+0

here 발견 될 수 있으므로, 파일 진수로 변환된다 잘라야. 나는 UTF-8로 그것을 필요로한다. 파일을 쓰기 전에 파일이 UTF-8인지 어떻게 확인할 수 있습니까? –

+0

실행중인 운영 체제는 무엇입니까? 방금 우분투에서 실행했고 작동했습니다. UTF-8을 지정하는 – Gazler

답변

1

잘라 내기가 단순히 0

파일을 읽기 위해 열려면 반환 16 진수 문자를 반환하고 (또한 here) UTF-8 인코딩으로 작성 될 이유는 상상할 수 없다 :

File.open(name, "r+:UTF-8") 

또한 파일을 열 때 명시 적으로 파일을 닫은 다음 블록이 종료 될 때 Ruby kindly handles that으로 블록에 전달할 필요가 없습니다. 루비 인코딩

심층 논의 좋아

+0

이 작동했습니다. 감사! –

관련 문제