关于ASP程序读取MYSQL数据库中文显示乱码的问题

关于ASP程序读取MYSQL数据库中文显示乱码的问题,第1张

<%@

CODEPAGE=65001

%>

<%

Response.CodePage=65001%>

<%

Response.Charset="GBK"

%>

用写字板把

.asp

文件另存为

GBK字符集

------------------------------------------------------------

或者查询之前先执行下面这一句

set

chs=conn.Execute("SET

NAMES

'gb2312'")

'查询数据库

sql

=

"SELECT

*

FROM

tb_commondata"

Set

rs

=

conn.Execute(sql)

这样就不会乱码了

首先,在系统中安装Mysql 的ODBC数据库驱动。当前的稳定版本是3.51.下载地址是: http://dev.mysql.com/downloads/connector/odbc/3.51.html。下载安装好后。在控制面板-->管理工具-->数据源 (ODBC)中的驱动程序页中如果有MySQL ODBC 3.51 Driver就说明驱动已经安装成功,就可以开始写程序了。

下面是我测试时使用的程序,里面有说明就不再介绍了。

<%

'设置MySql连接属性

'各个变量说明:

' myHost:MySql数据库地址

' myDB:使用的MySql数据库名

' myUID:连接MySql数据库使用的帐号

' myPWD:连接MySql数据使用帐号的密码

' myChareSet:客户端使用的编码类型。根据实际情况使用。

' 一般情况下使用gb2312 utf8 gbk这三种编码。如果这三种都测试过仍然有乱码。

' 请检查你的设置。

'数据库设置开始

dim myHost,myDB,myUID,myPWD

myHost = "localhost"

myDB = "knowldge"

myUID = "root"

myPWD = "mysqladmin"

myChareSet = "gb2312"

strconnection="driver={mysql odbc 3.51 driver}server=" &myHost &"database=" &myDB &"user name=" &myUID &"password=" &myPWD

set conn = server.createobject("adodb.connection")

'连接数据库

conn.open strconnection

'设置客户端字符编码

conn.execute("set names '" &myChareSet &"'")

'数据库设置结束

%>

或:

set conn = server.createobject("adodb.connection")

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}SERVER=127.0.0.1DATABASE=ShopsUSER=rootPASSWORD=xxx"

上面是使用ADODB的连接方法,在默认3306端口是正常。

但在端口改成3333了,就出错。

SERVER=127.0.0.1:3333这样也不对,在PHP这样是可以用的

SERVER=127.0.0.1,3333MSSQL是这样改端口,但在这是错的。

这样可能可以:

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}SERVER=127.0.0.1PORT=3333DATABASE=ShopsUSER=rootPASSWORD=xxx"

-------------------------------------------------------------------------------------------------------------------------------------------------

一般情况下,使用asp的时候很少会用到mysql数据库,但有的时候就必须连接mysql,比如kaoyan.com因为论坛使用的是mysql的数据库,而其他一些频道是基于asp建立,所以涉及用户身份验证的时候,就经常需要用到asp来连接mysql。

1、asp连接mysql的基本方式

一般都是用myodbc来连接。首先需要安装MyODBC,可以到 http://www.mysql.com/下载。

安装好MyODBC之后,可以直接在asp代码里面通过以下语句来连接mysql数据库:

strconnection=”driver={mysql odbc 3.51 driver}

database=dbnameserver=localhostuid=dbuserpassword=dbpwd”

‘database:数据库名

’server:服务器名/ip

‘uid:用户名

‘password:密码

set con = server.createobject(”adodb.connection”)

con.open strconnection

另外还可以先在ODBC数据源里新建一个系统DSN,选择 MySQL ODBC 3.51 Driver作为数据源,填入相关的用户名和密码并测试之。相关的ASP连接代码如下:

strconnection=”dsn=dbdsndriver={mysql odbc 3.51 driver}uid=dbuserpassword=dbpwd”

‘dsn:新建的DSN名称

‘uid:用户名

‘password:密码

set con = server.createobject(”adodb.connection”)

con.open strconnection

2、需要注意的问题(mysql4.1及以上版本)

mysql4.1及以上版本对字符集的限定跟之前的版本有很大不同,在进行数据库查询的时候如果不对字符集加以设定,一旦有查询的字段有中文,便很可能出现下面这样的错误:

Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80040e31′

[MySQL][ODBC 3.51 Driver][mysqld-4.1.18]Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ‘=’

这个时候就需要对asp的查询语句进行一些修改,增加有关的字符集的设定:

“select email from members where username=_gbk ‘”&username&”‘ COLLATE gbk_chinese_ci“ ---------------------------------------------------------------------------------------------------------------------------------------------

、到mysql网站: http://dev.mysql.com/downloads/下载MySQL ODBC 3.51 Driver安装

2、使用如下代码链接

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}SERVER=" &strIP &"DATABASE=" &strDBName &"USER=" &strUserName &"PASSWORD=" &strPass &"OPTION=3"

如果MyODBC版本不同,请自行修改Driver中的字符串

 <%

strconnection="dsn=mysqltest

driver={mysql odbc 3.51 driver}

server=填入服务器地址uid=用户名pwd=密码database=mm"

‘连接字符串,dsn就是我们设置的数据源标识符

注意driver我们刚才在设置系统DSN的时候提过。

 

set conn = server.createobject("adodb.connection")

conn.open strconnection

sql = "select * from my" ‘SQL查询语句

set rs = conn.execute(sql)

if not rs.bof then  %> 原文地址: http://blog.csdn.net/yydy1983/article/details/1728334

方法一:使用MySQL推出的MySQL Connector/Net组件, 该组件是MySQL为ADO.NET访问MySQL数据库设计的.NET专用访问组件。完成该组件后,需要在项目中引用这个组件,也可以直接在配置文件的<assemblies>节点内添加下面的节点:<add assembly="MySql.Data, Version=5.1.5.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>之后在程序中引用命名空间MySql.Data.MySqlClient,即可开始进行连接MySQL数据库的 *** 作了,示例如下:1protected void MySqlCon()2{3 //数据库连接字符串跟连接SQL SERVER没有区别4 string constr = "server=localhostUser Id=rootpassword=rootDatabase=test"56 //下面使用MySql Connector/net提供的专用对象7 MySqlConnection mycon = new MySqlConnection(constr)8 mycon.Open()9 MySqlCommand mycmd = new MySqlCommand("select * from users", mycon)10 MySqlDataReader myreader = mycmd.ExecuteReader()11 while (myreader.Read())12 {13 if (myreader.HasRows)14 {15 Response.Write(myreader.GetString("email") + "<br/>")16 }17 }18 myreader.Close()19 mycon.Close()2021}方法二:使用ODBC.NET。一般来说,ODBC.NET的DataProvider是标准的.NET框架(1.1及以上的版本)的一部分,所以会和后者一起自动安装好。一旦确认ODBC.NET安装完毕,你就需要下载用于MySQL的ODBC驱动程序:MySQL Connector/ODBC,目前最新版本是3.51。安装完毕后就可以使用ODBC.NET连接MySQL数据库了,首先需要在程序中引入System.Data.Odbc命名空间,具体的示例如下:1 public void Connect_Odbc()2 {3 //需要事先创建MySQL ODBC DSN.4 string odbcString = "DSN=MySQL"56 //string odbcString = "DRIVER={MySQL ODBC 3.51 Driver}" +7 // "SERVER=localhost" +8 // "Port=3306" + //连接本地数据库时可省略此项设置9 // "DATABASE=test" +10 // "UID=root" +11 // "PASSWORD=root" +12 // "OPTION=3"1314 OdbcConnection odbcConn = new OdbcConnection(odbcString)15 odbcConn.Open()16 OdbcCommand odbcCmd = new OdbcCommand("SELECT * FROM users", odbcConn)17 OdbcDataReader myreader = odbcCmd.ExecuteReader()18 while (myreader.Read())19 {20 if (myreader.HasRows)21 {22 Response.Write(myreader.GetString(0) + "<br/>")23 }24 }25 myreader.Close()26 odbcConn.Close()27 }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7313337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存