小编Sim*_*Dau的帖子

表情符号和ColdFusion

我已经玩了一段时间了。我要实现的目标是保存到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)

coldfusion emoji

5
推荐指数
1
解决办法
308
查看次数

标签 统计

coldfusion ×1

emoji ×1