我正在尝试使用查询字符串向我的MySQL数据库插入表情符号,但我不知道我在做什么错了?
我有一个设置为utf8mb4的MySQL数据库,我可以使用Mysqlworkbench将表情符号插入到表中,并将其显示为真实的表情符号。因此,数据库可以正常工作。而且,如果我只是尝试在.asp页上显示该表情,那么我会显示应有的表情符号。 我已将数据库,表和列设置为utf8mb4_general_ci,对吗?
和我的数据库连接(koppling.asp):
strConn = "driver={MySQL ODBC 5.2 Unicode Driver};server=localhost;uid=xxx;pwd=xxx;database=emojtest;option=3;charset=utf8mb4;"
set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConn
向我的insertemoji.asp页发送的查询字符串/变量是这样的。
www.somepage.se/emojitest/insertemoji.asp?text=
我的insertemoji.asp看起来像这样。
<!--#include file="koppling.asp" -->
<%
Response.charset="utf-8"
thetext = request.querystring("text")
sql= "INSERT INTO news (text) VALUES ('"&thetext&"');"
conn.Execute (sql)
response.write thetext (this is showing 😜😀😊😃)
%>
但是表情符号不会存储为表情符号,只能像😜😀😊😃
这样存储,如果编码正确,它将是类似\ xF0 \ x9F \ x98 \ x82
那我想念什么?我哪里出问题了?
如果应该将其存储为\ xF0 \ x9F \ x98 \ x82,那么当我将其显示在.asp页上时,如何将其转换/编码为真实的表情符号?
表情符号应该如何存储在数据库中?
应该像是可见的真实表情符号吗?
或者像这样ðŸ〜œðŸ〜€ðŸ〜ŠðŸ〜ƒ
或者这样的\ xF0 \ x9F \ x98 \ x82
我终于解决了这个问题,我使用了MySQL ODBC 5.2 Unicode驱动程序,当我改用MySQL ODBC 3.51驱动程序时,它就起作用了!
答案 0 :(得分:0)
,当Mojibaked成为
😜😀😊😃
。这是因为混淆了F09F989CF09F9880F09F988AF09F9883
十六进制,在utf8mb4中将其视为Emoji,但latin1却使它变得乱码。
要查看代码中可能出了什么问题,请参见Trouble with UTF-8 characters; what I see is not what I stored