我在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
我认为我浏览了所有应用程序设置但仍无法找到解决方案。我将不胜感激任何帮助。
答案 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,你可能想要改变它。