将包含 %3A(冒号)的编码 url 字符串传递给 APEX 页面会在最后一个 %3A 之后截断

Passing encoded url string containing %3A (colon) to an APEX page truncates everting after the last %3A

我正在使用 ORACLE APEX 5.0.1

我正在将一个 url 字符串传递给一个 APEX 应用程序,我在其中对所有特殊字符进行了编码,如果 url APEX 中有一个或多个 %3A(冒号)截断我传递的值。 这只影响我传递的最后一个变量和最后一个 %3A 之后的剩余部分,但是如果我在 url 的最后放置一个 %3A 它在 APEX 中工作。 我在其他论坛上问过这个问题,这似乎是 APEX 中的一个相对未知的问题,没有任何相关的答案来解释这个问题。

此示例将值传递给 tre 字段

"...../apex/f?p=118:32:::::P32_XX,P32_YY,P32_ZZ,:100030,486,VMKF%3AU%202012%3A50"

P32_XXP32_YY取值ok P32_ZZ 只获取值 "VMKF:U 2012" 但是如果我像这样

在 url 的末尾放一个 %3A
"...../apex/f?p=118:32:::::P32_XX,P32_YY,P32_ZZ,:100030,486,VMKF%3AU%202012%3A50%3A"

它工作正常并且 P32_ZZ 得到值 "VMKF:U 2012:50".

我已经在 Windows Explorer 11、Google Crom 和 Mozilla Firefox(最新版本)中进行了相同行为的测试。

如果我使用文字冒号 (:)

,我也会有同样的行为

感谢帮助

问题是冒号是 APEX 不同部分的分隔符 URL。我很惊讶使用 %3F 没有解决它,但解决方案是用 \...\ 包围整个值,如下所示:

...../apex/f?p=118:32:::::P32_XX,P32_YY,P32_ZZ,:100030,486,\VMKF%3AU%202012%3A50\

请注意,您现在甚至不需要转义冒号:

...../apex/f?p=118:32:::::P32_XX,P32_YY,P32_ZZ,:100030,486,\VMKF:U%202012:50\