ruby 解压zip文件方法以及遇到的问题

wiki:

ruby代码:

def self.unzip_file zip_file_path
      if Rails.env == "development"
        self.window_unzip_file zip_file_path
      else
        self.linux_unzip_file zip_file_path
      end
  end

def self.window_unzip_file zip_file_path, file_type, company_id
    if File.exists?(zip_file_path)
      Zip::File.open(zip_file_path) do |zip_file|
        zip_file.each do |f|
          f_path = File.join(pdf_path, f.name)
          FileUtils.rm_rf(f_path) if File.exists?(f_path)
          zip_file.extract(f, f_path) #unless File.exist?(f_path)
        end
      end
   end     
end 

  def self.linux_unzip_file zip_file_path
    zip_path = File.dirname(zip_file_path)
    zip_name = File.basename(zip_file_path)
    system("LANG=en_US.UTF-8;cd #{zip_path};unzip -o #{zip_name}")
  end

 遇到的问题 linux解压之后名字出现#U451#U936l编码,编码不对,指定编码LANG=en_US.UTF-8即可

  • encdoing用来查看字符串的编码信息。
  • force_encoding用来修正字符串编码信息,注意是修正。
  • encode, encode!用来转码字符串。
posted @ 2021-12-23 09:37  鞋带松了  阅读(217)  评论(0编辑  收藏  举报