我从经典的ASP页面连接到MySQL 5.5.50-log。
MySQL数据库的设置如下:
表和字段:
要测试,我在表中有包含以下字符串的数据:?(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代替这些驱动程序:
他们都没有解决问题。
我想知道是否有解决办法,或者基本上没有办法显示使用Classic ASP从MySQL数据库检索到的表情符号数据?
据我所知,通过阅读其他地方,MySQL数据库已以支持存储表情符号字符的方式正确设置,这一事实得到了事实的证实,我可以毫无问题地查看存储在数据库中的事实。只是当我尝试通过Classic ASP到MySQL连接将其从数据库中拉出时,表情符号字符不会显示。编辑-ASP页面本身另存为UTF-8编码文件:
答案 0 :(得分:1)
除了设置响应并将文件另存为UTF-8之外,您可能还需要设置这样的页面语言。请注意,这应该在文件的最顶部,然后再进行其他操作:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
response.codepage = 65001
response.charset = "utf-8"
%>
我已经在编码方面进行了很多努力,并且我们一半的系统是由非UTF文件组成的,而这里的这段代码正是使我能够使用UTF-8实现其自身功能的原因。