module Aio::Base::Toolkit::String

Public Class Methods

safe(str) click to toggle source

终极解决方案 遇到了 invalid byte sequence in UTF-8 (ArgumentError) 问题 解决办法参考 stackoverflow.com/questions/29877310/invalid-byte-sequence-in-utf-8-argumenterror

# File lib/aio/base/toolkit/string.rb, line 7
def safe(str)
  case Aio::Base::Toolkit::OS.os_family
  when "unix"
    if ! str.valid_encoding?
      str = str.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
    end 

    # UTF-8 编码前缀删除
    # 参考: https://estl.tech/of-ruby-and-hidden-csv-characters-ef482c679b35
    str.sub!("\xEF\xBB\xBF", '')

  when "windows"
    #str = str.force_encoding("UTF-8")
    str = str.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
    str.sub!("\xEF\xBB\xBF", '')
  end
  return str 
end
safe_path(path) click to toggle source

改写成安全的Windows书写方式

# File lib/aio/base/toolkit/string.rb, line 27
def safe_path(path)
  if Aio::Base::Toolkit::OS.windows?
    path.gsub!("/", "\\")
  end
end