- 第 8 位會員
- ID:caterpillar
- 城市:Kaohsiung
- 加入時間:2011年11月26日
- 簽名檔:良葛格
- 個人網站:http://openhome.cc
個人介绍
我是一隻弱小的毛毛蟲,想像有天可以成為強壯的挖土機,擁有挖掘夢想的神奇手套!
-
12月23日 08:42 在 請求參數 URL 編碼 回應:
如果設定config/application.rb中config.encoding為UTF-8時,請求參數若是Big5的「測」URL編碼,也就是編碼為%B4%FA,則控制器中透過params取得的請求參數字串為UTF-8編碼,但是事實上位元組序列還是B4 FA,可以有機會轉回正確的UTF-8字串。例如若發送test=%B4%FA,可以如下取得正確的Big5編碼的「測」,再轉為UTF-8編碼的字串:
params[:test] = params[:test].force_encoding("big5").encode("UTF-8")
如果設定config/application.rb中config.encoding為Big5時,請求參數若是Big5的「測」URL編碼,也就是編碼為%B4%FA,則控制器中透過params取得的請求參數字串為Big5編碼,但是位元組序列還是63 63,所以沒有機會轉回正確的Big5字串,此時可透過query_string取得原始的查詢參數,如下處理:
# 假設查詢參數是test1=%B4%FA&test2=%B8%D5 require "cgi" parameters = request.query_string.split("&") # ["test1=%B4%FA", "test2=%B8%D5"] parameters.each do |parameter| p = parameter.split("=") params[p[0]] = CGI.unescape(p[1], "big5") end
這邊透過CGI模組中的unescape方法來解碼URL,params[:test1]就會是正確的Big5編碼「測」字,params[:test2]就會是正確的Big5編碼「試」字。
-
12月21日 09:26 在 請求參數 URL 編碼 回應:
當然 UTF-8 一路到底是最省事的,不過要處理其它編碼的機會也是有的,之前客戶(維護為主)那邊就遇到不少要處理編碼的鳥事,無論如何,走別的路暫時倒也有一些心得:
http://caterpillar.onlyfun.net/Gossip/Rails/Encoding.htmlRails 目前還在學,有寫錯麻煩鞭一下:
http://caterpillar.onlyfun.net/Gossip/Rails/index.html在客戶那邊的經驗,整理的一些編碼心得:
http://caterpillar.onlyfun.net/Gossip/Encoding/index.html -
12月21日 08:24 在 請求參數 URL 編碼 回應:
如果params取得的字串位元組序列都是63,應該就不是 iconv 可以幫上忙了,還是說 Rails 有辦法讓 iconv 之類的程式庫,可以介入 Rails 對 URL 進行解碼的過程?或者是 Rails 本身有哪邊可以直接設定 URL 編碼的選項?
-
12月21日 03:25 在 請求參數 URL 編碼 回應:
先自答一下...
在設定 config.encoding 為 Big5 時,請求參數若是Big5的「測」URL編碼,也就是編碼為%B4%FA,暫時想到,可以用request.query_string取得完整的查詢字串,再自己作URL解碼來得到Big5的「測」,不知道有沒有比較沒這麼笨的方法?
-
11月26日 08:42 在 歡迎大家加入這裡!來打聲招呼吧! 回應:
Orz