module Aio::Base::Toolkit::String class << self # 终极解决方案 # 遇到了 invalid byte sequence in UTF-8 (ArgumentError) 问题 # 解决办法参考 https://stackoverflow.com/questions/29877310/invalid-byte-sequence-in-utf-8-argumenterror 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 when "windows" #str = str.force_encoding("UTF-8") str = str.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8') end return str end # 改写成安全的Windows书写方式 def safe_path(path) if Aio::Base::Toolkit::OS.windows? path.gsub!("/", "\\") end end end end