elixir 中的 encodeURIComponent

encodeURIComponent in elixir

寻找 elixir 方法来编码 uri 组件,即 javascript encodeURI("&") "&" encodeURIComponent("&") "%26" 长生不老药 URI.encode("&") “&” pry(11)> URI.encode_query(%{k: " & "})<br> “+k=%26+” 基本上我想要 encode_query 但不必做键值映射并将空格编码为 %20,而不是 +

已找到解决方案,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 接受第二个可选参数 - 一个确定是否跳过对字符进行编码的函数。所以我们可以使用函数 returns false (not skip) for any char:

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