对某些字符(在本例中为表情符号)使用 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 ❤️ 🍕
EncodeForHTML(test);
关于encoding - 使用 EncodeForHTML 时的 Coldfusion/Lucee 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720136/