表情符号和ColdFusion

Sim*_*Dau 5 coldfusion emoji

我已经玩了一段时间了。我要实现的目标是保存到MySQL数据库,然后将其输出到窗口,然后再确认确认的表情符号,例如(是,21世纪的问题)

经过大量的修改和在此站点上找到的各种教程和答案之后,我设法实现了将它们保存到数据库的功能。

我以一个简单的自我提交表单为例,并将一个MySQL数据库配置为UTF8mb4。如果我将emoji表情粘贴到textarea并点击Submit,它确实会保存到数据库表中。当使用phpmyadmin查看时,它确实显示了按预期保存的测试表情符号。但是,当我使用cfquery从数据库中获取字符串并将其输出到窗口时,它显示了一个简单的“?”。

有任何想法吗?

额外信息:我的测试窗口顶部确实包含以下标签:

<cfset setEncoding("form","utf-8")> 
<cfcontent type="text/html; charset=utf-8"> 
<cfprocessingdirective pageencoding = "utf-8">
Run Code Online (Sandbox Code Playgroud)

数据库连接字符串也具有allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8,似乎可以正常工作,因为我可以成功插入表情符号。我想念什么?

编辑1

根据请求,以下代码用于从数据库中选择包含表情符号的字符串并将其输出到窗口:

<cfquery name="get_ci" datasource="test" username="#application.db_username#" password="#application.db_password#">
       SELECT _string
       FROM test_table
       WHERE _id = 1
       LIMIT 1
</cfquery>

<cfoutput>#get_ci._string#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

编辑2(解决方案)

经过深思熟虑,肯定有很多解决方案,但这至少对我有用。为了升级MySQL服务器以支持UTF8mb4,我使用了以下指南:https ://mathiasbynens.be/notes/mysql-utf8mb4 (请注意,在启动此线程之前已完成此操作,并非解决此问题的方法)。但是,在其技术人员的帮助下使其能够在我们托管的VPS上运行之后,我已经成功地成功匹配了设置,这就是答案:指南要求将my.ini的设置更新为以下设置:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
Run Code Online (Sandbox Code Playgroud)

但是,握手和整理是使整个操作失败的两个方法。我一评论完,哇!因此,以防万一其他人在此问题上苦苦挣扎并求助于…尝试注释掉这些设置,看看是否可行。

更新了my.ini并添加了注释:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
#character-set-client-handshake = FALSE
character-set-server = utf8mb4
#collation-server = utf8mb4_unicode_ci
Run Code Online (Sandbox Code Playgroud)

Sim*_*Dau 1

解决方案:

\n\n

经过深思熟虑,这里肯定有很多至少对我有用的解决方案。为了升级 MySQL 服务器以支持 UTF8mb4,我使用了本指南: https: //mathiasbynens.be/notes/mysql-utf8mb4(请注意,这是在启动此线程之前完成的,并不是所提出问题的解决方案)。然而,在技术人员的帮助下让它在我们托管的 VPS 上运行后,我成功地匹配了设置,答案如下:指南要求将 my.ini 设置更新为以下内容:

\n\n
[client]\ndefault-character-set = utf8mb4\n\n[mysql]\ndefault-character-set = utf8mb4\n\n[mysqld]\ncharacter-set-client-handshake = FALSE\ncharacter-set-server = utf8mb4\ncollation-server = utf8mb4_unicode_ci\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,握手和核对是导致整个操作失败的两个因素。当我把它们评论出来时,wola!因此,以防万一其他人正在解决此问题并诉诸 \xe2\x80\xa6 尝试注释掉这些设置,看看它是否有效。

\n\n

使用应用的注释更新了 my.ini:

\n\n
[client]\ndefault-character-set = utf8mb4\n\n[mysql]\ndefault-character-set = utf8mb4\n\n[mysqld]\n#character-set-client-handshake = FALSE\ncharacter-set-server = utf8mb4\n#collation-server = utf8mb4_unicode_ci\n
Run Code Online (Sandbox Code Playgroud)\n