ruby - 在 Ruby 中确定文件的编码

标签 ruby file io internationalization

我想出了一种方法来确定我传入的文件的编码(或至少是猜测):

def encoding_type(file_path)
 File.read(file_path).encoding.name
end

问题是我有一个 15GB 的文件,这意味着整个文件都被读入了内存。

有没有办法在不需要将整个文件读入内存的情况下完成我在这个方法中所做的事情?

最佳答案

file -mime 命令将返回文件的 mime 类型和编码:

file -mime myfile

我的文件:文本/纯文本; charset=iso-8859-1

def detect_charset(file_path)
  `file --mime #{file_path}`.strip.split('charset=').last
rescue => e 
  Rails.logger.warn "Unable to determine charset of #{file_path}"
  Rails.logger.warn "Error: #{e.message}"
end

关于ruby - 在 Ruby 中确定文件的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897465/

相关文章:

ruby - 在 Ruby + Chef 中检查现有目录失败

java - 如何将文件(带路径)作为Java中方法的参数传递

Java读取和编码大型二进制文件

ruby - git:从 bitbucket 导出并导入 github(带提交)

ruby-on-rails - 如何在我的抓取中处理 "404 errors"?

ruby-on-rails - Stripe rails : Invalid integer: 1. 06

java - 打开的文件句柄太多

python - 如何使从 netCDF (.nc) 加载的数组可写?

java - 为什么 InputStream obj 不能直接嵌套到 BufferedReader obj 中?

java - 使用java的java.nio.file.readAllLines时是否需要使用try-with-resource?