2012-03-28 5 views
1

내가 루비에서 1.8.7 1.9.2 (및 레일 3.2.2)으로 업그레이드 순 :: FTP 번호의 gettextfile는 인코딩을 던지고 문제를 가지고 : : UndefinedConversionError루비 1.9 + 순 :: FTP => 인코딩 :: UndefinedConversionError

나는 UTF-8로 인코딩 된 XML 파일을 다운로드하기 위해 노력하고있어. getbinaryfile을 사용하면 dowload가 제대로 작동하지만 gettextfile이 작동하지 않는 이유를 알고 싶습니다.

File.open("some.xml", "r:ASCI-8BIT:UTF-8") 

을하지만, 인터넷 :: FTP에 대한이 같은 옵션을 찾을 수 없습니다 :

# -*- encoding : utf-8 -*- 

# working 
ftp = Net::FTP.open(host,user,password) 
ftp.passive = true 
ftp.getbinaryfile("some.xml","tmp/some.xml") 

# not working 
ftp = Net::FTP.open(host,user,password) 
ftp.passive = true 
# raises Encoding::UndefinedConversionError: "\xFF" from ASCII-8BIT to UTF-8 
ftp.gettextfile("some.xml","tmp/some.xml") 

나는 내가 사용 File.open 경우 다음과 같이 외부 및 내부 인코딩을 전달할 수 있다는 것을 알고있다.

또한 gettextfile의 블록 버전을 사용해 보았지만 제대로 작동하지 않으며 동일한 오류 메시지가 표시됩니다.

File.open("some.xml", "w:ASCII-8BIT:UTF-8") do |file| 
    ftp.gettextfile("some.xml") { |line| file.write line } 
end 

여기에 무엇이 잘못 되었습니까?

답변

3

ftp.gettextfile 대신 ftp.getbinaryfile을 사용하면 다시 작동합니다. :)