【发布时间】:2019-03-11 21:33:01
【问题描述】:
我正在尝试使用查询字符串将表情符号插入到我的 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 驱动程序时它工作了!
【问题讨论】:
-
这是嵌入在 HTML 页面中的吗? HTML页面是否有
<meta charset="utf8" />? -
它是一个 .asp 页面,我在其中设置了 Response.charset="utf8mb4"。
-
您是在浏览器中打开您的 .asp 页面吗?然后它仍然是一个 HTML 文件。而
utf8mb4是mysql 特有的字符集。浏览器不理解。添加元标记 -
所以应该是Response.charset="utf8"?我认为我需要将它作为 utf8mb4 吗?必须出去,一小时后回来。谢谢埃弗特
-
埃弗特。如果我们从 db.我的数据库设置正确吗?它应该是列上的 utf8mb4_general_ci 还是应该是 utf8mb4_bin? db 和 table 和 bin 上的列应该是通用的吗?