encodeURIComponent方法在灵药

问题描述:

寻找长生不老药的方式来编码URI组件即 javascript encodeURI("&") "&" encodeURIComponent("&") "%26" Elixir URI.encode("&") "&" pry(11)> URI.encode_query(%{k: " & "})
"+k=%26+"
基本上我想encode_query但没有做键值地图,也编码空间为%20,而不是+encodeURIComponent方法在灵药

找到解决方案, 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"

URI.encode/2接受第二个可选参数 - 一个函数来确定是否跳过编码字符。因此,我们可以使用返回false(不跳过)的任何字符的函数:

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