URL在Oracle APEX js重定向中将utf8字符编码为%

时间:2017-08-28 07:36:15

标签: jquery oracle utf-8 oracle-apex

我在Oracle APEX页面的Page Loads部分的Execute中有一个jQuery代码。我的页面由PL / SQL动态内容组成,更具体地说,两个选择列表就像一个过滤器。因此,当其中一个选择列表的选定值更改时,将调用具有正确页面项值的重定向。 JQuery代码bellow只处理调用页面重定向的第二个选择列表。

var appId = $v('pFlowId');
var pageId = $v('pFlowStepId');

var this_page_link_prefix = 'f?p='+appId+':'+pageId+':::NO:RP:';

$(document).on('change', '#category_select', function() {
    if ($(this).val() != '') {
        var href = this_page_link_prefix+'P'+pageId+'_FILTER_CATEGORY,P'+pageId+'_FILTER_RACE_TYPE:'
        +$(this).val()+','+$('#race_type_select').val()+':';
        console.log(href);
        $(location).attr('href', href);
    }
});

在这里,我遇到了自己无法解决的问题。当我的过滤器包含UTF-8字符(如“Ž”)时,url以%encoding编码。例如,当选择列表包含“Ženy”时,我的重定向URL如下所示:

在fp = 123:5:9348018667019 :: NO:RP:P5_FILTER_CATEGORY,P5_FILTER_RACE_TYPE:的%25C5%25BDeny 下,1

当我尝试控制log href变量时,它包含正确的URL:

在fp = 123:5:9348018667019 :: NO:RP:P5_FILTER_CATEGORY,P5_FILTER_RACE_TYPE:的仲尼下,1

我认为我浏览了所有应用程序设置但仍无法找到解决方案。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

我不知道如何控制是否在浏览器的URL栏中显示UTF-8字符。例如,Chrome会让我输入它们并正确显示它们,但是当它将请求发送到服务器时,它会对它们进行百分比编码。尝试使用F12开发人员工具并执行简单的请求,例如https://www.google.com/search?q=Ženy

所以可能是你的浏览器在做这件事。但是你绝对可以解决的问题是确保P5_FILTER_CATEGORY页面项目的最终UTF-8值不是百分比编码。只需添加一个" Before Header"过程或要做的事情:

:P5_FILTER_CATEGORY := UTL_URL.UNESCAPE (:P5_FILTER_CATEGORY, 'UTF8');

另一件可能有用的事情就是编辑您的页面模板,并确保他们在页眉中设置您想要的字符集,例如。

<html><head>
<meta charset="utf-8"/>
....

最后,您可能希望使用浏览器开发工具并检查HTTP标头中发送的Content-Type charset APEX。我不记得如何改变这一点,但如果它不是utf-8,你可能想要改变它。