1. 程式人生 > 其它 >ruby 解壓zip檔案方法以及遇到的問題

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!用來轉碼字串。