1
使用Ruby 1.9.1或1.9.3,我在將%
符號插入數據庫時遇到問題。如果是私有方法,如何記錄URL編碼?
唯一的例外是:
/app/vendor/ruby-1.9.3/lib/ruby/1.9.1/uri/common.rb:898:in `decode_www_form_component'
我被告知使用p
輸出str
。
這是紅寶石/ lib目錄/ 1.9.1/UTIL/common.rb:
def self.decode_www_form_component(str, enc=Encoding::UTF_8)
require 'logger'
# Keep data for the current month only
$LOG = Logger.new('this_month.log', 'monthly')
$LOG.debug("#{str.p}")
raise ArgumentError, "invalid %-encoding (#{str})" unless /\A[^%]*(?:%\h\h[^%]*)*\z/ =~ str
str.gsub(/\+|%\h\h/, TBLDECWWWCOMP_).force_encoding(enc)
end
我得到這個錯誤:
Internal Server Error
cannot parse Cookie header: private method `p' called for "innate.sid":String
如何p
str
找出裏面有什麼它也許它是什麼編碼?
您正在修改URI的代碼?不要這樣做!編寫一個可以在自己的代碼中覆蓋它的方法非常簡單,或者簡單地將其包裝並輸出到日誌中。如果更改系統或核心代碼,則會影響每個其他使用該方法的腳本,如果出現錯誤,則可能會導致錯誤結果。 OO語言的最佳特性之一是我們可以覆蓋而不必更改基類代碼 –