我有一个在自定义 URI 上启动的应用程序,该 URI 类似于 myapp://whatever/something
有一个 HTML 页面,其中有一个 href 链接,如下所示 -> myapp://whatever/?x=abc;y=pqr;
当在 Chrome 中单击此按钮时,myapp 会获取 URL myapp://whatever/?x=abc%3By%3Dpqr%3B
,该 URL 会被编码
但是,当我在默认 Internet 浏览器上单击同一链接时,不会进行任何编码。它获取原始 URL -> myapp://whatever/?x=abc;y=pqr;
什么是正确的行为?
我在 Android 4.4.3 上使用 Chrome 38.0.2125.114 进行了尝试。另外,我认为早期版本的 Chrome 没有这样做,但不太确定。
最佳答案
网址中分号的处理并不完全一致,因此最好的方法是正确且明确地转义网址。
如果您打算将 x
的单个查询参数设置为值 abc;y=pqr;
,则转义形式是正确的:
?x=abc%3By%3Dpqr%3B
但是,如果您想要单独的参数,那么 &
将是互操作性的更好选择。如果您想将x
指定为abc
,将y
指定为pqr
,那么您应该将其指定为:
?x=abc&y=pqr
正如您所见,使用未转义的分号无法预测浏览器行为,因此请避免使用它们。
关于android - 浏览器是否应该在启动应用程序之前对自定义 URI 进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26707046/