寻找elixir编码uri组件的方法,即
javascript
encodeURI("&")
"&"
encodeURIComponent("&")
"%26"
Elixir
URI.encode("&")
"&"
pry(11)> URI.encode_query(%{k: " & "})
基本上我想要encode_query,但不必进行键值映射,也可以将空格编码为%20,而不是+
"+k=%26+"
答案 0 :(得分:3)
找到解决方案,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"
答案 1 :(得分:0)
URI.encode/2
接受第二个可选参数 - 一个确定是否跳过编码char的函数。所以我们可以使用为任何char返回false(不跳过)的函数:
URI.encode("&", fn(_) -> false end)
"%26"