Sha256: 9bd030871acae9eb47e2198efaf4512605e4b67e94690c2086fdc2d65e5fec96

Contents?: true

Size: 1.77 KB

Versions: 4

Compression:

Stored size: 1.77 KB

Contents

module WebLoader
  module Utils
    UTF_8 = 'UTF-8'
    def toutf8(str, response_encoding)
      # 2022/04/04(月)
      # GITHUBのアポストロフィ(&#x2019 U+2019)が文字化け問題に対処するために新設。
      # 原因は直接Kconv.toutf8にresponse.bodyをわたしていたことなので(Kconvのguessが失敗していたと思われる)、
      # response.type_paramsを見てそれにforce_encodingすることで対処する。渡されているcharsetとWebページの文字コードが一致していればこれで問題はないはず。
      org_str = str.dup
      result = str
      begin
        if response_encoding.to_s.length > 0 # nilでないかつ長さが0以上
          # responseで指定された文字コードであるとみなす
          str.force_encoding(response_encoding)
          if str.valid_encoding?
            # 指定された文字コードとみなせた場合
            if response_encoding != UTF_8
              # エンコーディングがUTF8じゃない場合返還する
              result = str.encode(UTF_8, invalid: :replace, undef: :replace)
            else
              # UTF8の場合そのまま
              result = str
            end
          else
            # 指定された文字コードとみなせない場合元の文字列を返す
            result = org_str
          end
        else
          # responseで文字コードが指定されていない場合Kconvを使用
          result = Kconv.toutf8(str)
        end
      rescue => ex
        puts ex.message
      end
      result
    end

    def to_redirect_url(orig_uri, location)
      redirect_url = location
      if location =~ /^\//
        redirect_url = URI.join(orig_uri, location).to_s
      end
      redirect_url
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
web_loader-1.0.0 lib/web_loader/utils.rb
web_loader-0.9.2 lib/web_loader/utils.rb
web_loader-0.9.1 lib/web_loader/utils.rb
web_loader-0.9.0 lib/web_loader/utils.rb