【发布时间】:2018-09-06 21:39:46
【问题描述】:
当我在 Apex 页面的任何位置输出如下表情符号时,HTTP 输出会中断。
图 1 - 表情符号示例:
???? ??? ??? ??? ??? ??? ??? ????
图 2 - 损坏的 HTML
我的意思是,页面上看似随机的字符消失了,你们都知道这会导致整个页面无法正确呈现。
对我来说,这似乎是一个字符集问题 - 也许 Apex 无法计算正确的长度或其他什么?
我在 apex.oracle.com 上使用 Oracle Apex 18.1。
复制步骤:
- 转到https://apex.oracle.com/pls/apex/f?p=51681
- 在“普通图标计数”字段中输入 1000,然后按“渲染”
- 1000颗心会出现
- 在 Emoji Count 字段中输入 1000,然后按 Render
- HTML 会在某处中断(可能会出现约 1000 个表情符号)
输出字符的代码位于动态 PL/SQL 区域中,如下所示:
DECLARE
l_text VARCHAR2(10) := '♥';
BEGIN
FOR i IN 1.. NVL(:P1_EMOJICOUNT_1,10) LOOP
htp.p('<span id="myDiv'||i||'">'|| l_text ||'</span>');
END LOOP;
END;
【问题讨论】:
-
这很奇怪。不仅如此,它还从 v692..6-brokenone..718 中完全跳过了大约 20 个。
-
更奇怪的是 htp.p(i||'->'||l_text 只是花花公子
-
是的,这种行为非常奇怪。我是否在 htp.p 中输出 HTML 并不重要。只是网站上存在的表情符号会破坏页面的整个 HTML。
-
如果你选择一个非常高的数字,比如 100000,它甚至会导致服务器错误。
-
如果将那段代码放入一个存储过程中,并创建一个源是该 PL/SQL 过程的 Apex 区域会发生什么?
标签: oracle plsql oracle-apex