如何避免重复编码 URI

Nic*_*nto 3 ruby encoding uri

如果 URL 未编码,稍后会导致问题,所以我这样做

URI.encode(url)
Run Code Online (Sandbox Code Playgroud)

问题是,如果 url 已经被编码(无论出于何种原因),这会进一步对 url 进行编码,使其无法使用。

除了这样做之外URI.encode(URI.decode(url)),还有更好的方法来确保 url 仅编码一次吗?

jro*_*ind 5

没有真正的方法,您只需要跟踪字符串是否已经进行 URI 转义即可。如果您有一个字符串,但不知道它是否已经经过 URI 转义,则没有好的解决方案。

一般来说,您应该在代码中的单个点进行编码。在内存中,所有字符串通常不应进行 URI 转义。从 URI 解析组件后应立即取消转义。在构建 URI 时,仅在构建完整 URI 时对它们进行转义/编码。

当你有一个字符串并且不知道它是否已编码时,你就不走运了;您需要进行跟踪,最好是确保编码发生在明确的系统边界上。