Monday, February 15, 2010

gsearch

visionmedia-google-searchがmultibyte文字に対応してなかったので対応させる
 
    def self.url_encode string
      string.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
        '%' + $1.unpack('H2' * $1.size).join('%').upcase
      }.tr(' ', '+')
    end

utf-8は3byteなのでunpack('H2')だと最初の1byteしかひろってくれない
下のようにして対応できた
    def self.url_encode string
      string.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/) {
        '%' + $1.unpack('H*')[0].scan(/../).join('%').upcase
      }.tr(' ', '+')
    end

No comments: