2016-09-28 111 views
1

尋找長生不老藥的方式來編碼URI組件即 javascript encodeURI("&") "&" encodeURIComponent("&") "%26" Elixir URI.encode("&") "&" pry(11)> URI.encode_query(%{k: " & "})
"+k=%26+"
基本上我想encode_query但沒有做鍵值地圖,也編碼空間爲%20,而不是+encodeURIComponent方法在靈藥

回答

2

找到解決方案, uri.encode具有 def char_unescaped?(char) when char in 0..0x10FFFF do char_reserved?(char) or char_unreserved?(char) end 默認參數爲第二個參數,通過使char_unreserved,功能現在將編碼保留字符

URI.encode(" & ", &URI.char_unreserved?(&1)) "%20%26%20"

0

URI.encode/2接受第二個可選參數 - 一個函數來確定是否跳過編碼字符。因此,我們可以使用返回false(不跳過)的任何字符的函數:

URI.encode("&", fn(_) -> false end) 
"%26"