通过ODBC连接检索的表情数据显示为问号 [英] Emoji data retrieved via ODBC Connection appears as question mark
本文介绍了通过ODBC连接检索的表情数据显示为问号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我从经典ASP页面连接到MySQL版本5.5.50-log。
MySQL数据库设置如下:
- 数据库字符集:utf8mb4
- 数据库排序规则:utf8mb4_General_ci
表和字段:
- 字符集:utf8mb4
- 排序规则:utf8mb4_General_ci
为了测试,我在表中有数据,其中包含这个字符串:🍔(T_T)é,è,à,ç
这是SQLyog:
中数据的屏幕截图这是我的测试网页:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
</head>
<body>
<p>Pasted directly from database field: 🍔(T_T) é, è, à, ç</p>
<p>Returned from SQL statement: ?(T_T) é, è, à, ç</p>
</body>
</html>
问题不是表情数据不能显示在网页上,因为直接从MySQL粘贴的内容看起来没有问题。问题是,一旦通过ODBC驱动程序从MySQL的SQL Select返回数据,它就不能正确呈现。
我在ASP代码中设置了以下内容:
Response.CodePage = 65001
Response.CharSet = "utf-8"
我尝试过其他变体,例如
Response.CodePage = 1252
Response.LCID = 1060
Response.Charset = "utf-8"
但它们没有什么不同。
我尝试了一系列MySQL ODBC驱动程序-例如
''----------------------
''connection string
''----------------------
Dim oConn
set oConn = Server.CreateObject("ADODB.Connection")
'oConn.Open "DRIVER={MySQL ODBC 5.1 Driver}; Server=localhost; Database=mydb; User=root; Password=testing; Option=3; CharSet=utf8mb4; stmt=SET NAMES 'utf8mb4';"
这不起作用.
我已尝试使用系统DSN,而不是使用这些驱动程序:
- MySQL ODBC 5.1驱动程序
- MySQL ODBC 8.0 Unicode驱动程序
- MySQL ODBC 8.0 ANSI驱动程序
它们都不能解决问题。
我想知道是否有什么方法可以解决这个问题,或者是否基本上没有办法显示使用Classic ASP从MySQL数据库检索到的表情符号数据?
据我所知,根据我在其他地方的阅读,MySQL数据库设置正确,以一种支持存储表情符号的方式,我可以毫无问题地查看存储在数据库中的表情字符,这证实了这一点。只是当我尝试通过经典ASP到MySQL连接将其从数据库中拉出时,表情符号才没有显示。编辑-ASP页本身另存为UTF-8编码文件:
UTF
除了设置响应并将文件另存为推荐答案-8之外,您可能还需要这样设置页面语言。请注意,它应该位于文件的最顶端,然后才是其他任何内容:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
response.codepage = 65001
response.charset = "utf-8"
%>
我在编码方面做了很多工作,我们的系统有一半是由非UTF文件组成的,正是这里的这段代码使我能够使用UTF-8来实现我自己的功能。
这篇关于通过ODBC连接检索的表情数据显示为问号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文