Ho un processo che recupera un file flat da un mainframe tramite FTP. Questo di solito funziona bene, ma ogni tanto il file conterrà qualcosa di un carattere accento. Se si tenta di ottenere un file contenente un accento, l'intero processo non riesce con il seguente errore: Encoding::UndefinedConversionError: "\x88" from ASCII-8BIT to UTF-8
Utilizzo di Net :: FTP gettextfile con caratteri non validi (ASCII-8BIT vs UTF-8)
Questo è il metodo gettextfile
Net::FTP
. Molte persone suggeriscono semplicemente di passare a getbinaryfile
- così facendo mi permetterò di scaricare il file, ma il file risultante è qualcosa che non posso più analizzare (dice che è in UTF-8, ma i contenuti non hanno senso).
C'è un modo per recuperare semplicemente e salvare il file come ASCII senza avere i binari convertono automaticamente l'output in UTF-8? Ecco il mio codice:
Net::FTP.open(config['host']) do |ftp|
Rails.logger.info("FTP Connection established")
ftp.login(config['user'], config['password'])
Rails.logger.info("Login Successful")
ftp.gettextfile("'#{config['es_in']}'", "data/es-in.#{Time.now.utc.strftime("%Y%m%d-%H%M%S")}")
ftp.gettextfile("'#{config['ca_in']}'", "data/ca-in.#{Time.now.utc.strftime("%Y%m%d-%H%M%S")}")
Rails.logger.info("Download(s) completed, terminating connection.")
end
Mancano campioni del testo incriminato. Aiuterebbe anche a sapere quali sono i primi due byte del file, insieme a un piccolo dump esadecimale di un file. "Le domande che cercano aiuto per il debug (" perché non funziona questo codice? ") Devono includere il comportamento desiderato, un problema specifico o un errore e il codice più breve necessario per riprodurlo nella domanda stessa. ad altri lettori Vedi: [Come creare un esempio minimo, completo e verificabile] (http://stackoverflow.com/help/mcve). " –