encoding - 使用 EncodeForHTML 时的 Coldfusion/Lucee 编码问题

标签 encoding coldfusion escaping lucee esapi

对某些字符(在本例中为表情符号)使用 EncodeForHTML 时遇到问题

本例中的文本是: ⌛️a😊b👍c😟💥🍉🍔💩🤦🏼‍♀️🤦🏼‍♀️🤦🏼‍♀️😘

现在如果我只是直接输出

<cfoutput>#txt#</cfoutput>

它显示正确,没有问题,但如果我先使用 EncodeForHTML

<cfoutput>#EncodeForHTML(txt)#</cfoutput>

我明白了 ⌛️a����b����c�� ������ �� ����‍♀️����‍♀️����‍♀️ ��

我也使用 EncodeForXML 和 esapiEncode 对其进行了测试以确保;所有人都给我相同的结果。 我已经验证了 Lucee 中的编码设置是 UTF-8,meta charset 标签也设置为 UTF-8。我找不到任何关于 EncodeForHTML 的文档,说明它是否对字符编码进行了任何更改,是否需要特定的字符编码,或者它是否存在与表情符号或某些代码点有关的任何已知问题。

我感谢任何人可以提供的任何帮助或澄清。

编辑:谢谢大家。希望我能接受多个答案。

最佳答案

我需要清理表情符号,以确保第三方内容与外部服务交叉兼容。一些内容包含表情符号并导致导出/导入问题。我写了一个ColdFusion wrapper对于emoji-java用于识别、清理和转换表情符号的库。

https://github.com/JamoCA/cf-emoji-java

例如,parseToAliases()函数“用别名替换在字符串中找到的所有表情符号的 unicode”。

emojijava = new emojijava();
emojijava.parseToAliases('I like 🍕');   // I like :pizza:

要“编码”,您可以使用 parseToHtmlDecimal()parseToHtmlHexadecimal()使用前的功能 EncodeForHTML() .

emojijava = new emojijava();
test = emojijava.parseToHtmlDecimal('I like 🍕');   // I &#10084;️ &#127829;
EncodeForHTML(test);

关于encoding - 使用 EncodeForHTML 时的 Coldfusion/Lucee 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720136/

相关文章:

c# - 如何使用 Encoding.GetString 处理大量数据? (抛出 OutOfMemoryException)

pdf - Elasticsearch-提取PDF内容并使用base64进行编码

python - 如何在 python 中编码/解码转义序列字符

coldfusion - Railo application.cfc this.mappings 不起作用

windows - ubuntu 上的 cfdirectory 在 windows 上访问 smbfs 的奇怪问题

php - 为什么两个相同编码的词在 htmlentities 中看起来不同?

coldfusion - 如果行是当前日期,则插入 anchor

python - 如何阻止 Django 转义 # 符号

java - 将十六进制+字符转换为字符

security - 如何在 Zend Framework 2 View 中自动转义变量