ASP與MySQL操作中中文亂碼

發(fā)布時間:   瀏覽: 7849

困擾了我多天的ASP與MySQL操作中中文亂碼問題終于得到了解

決,真是很有成就感;多天以來,在探索使用ASP查詢以及寫入

MySQL數(shù)據(jù)庫中漢字的成功實現(xiàn),我花費了大量的時間,幾乎查看

了網(wǎng)絡上所有關(guān)于ASP結(jié)合MySQL的文字,但是盡管看的多,收效

卻甚微,原因在于,MySQL一般是與PHP結(jié)合使用,基本上很難找

到一個在windows系統(tǒng)下使用ASP操作MySQL的成功案例,更難找

到這方面的問題解決方案,所以,要想解決這一問題,只能從其他

的程序語言中探索其中的奧妙。大概越是高級的東西,越需要較高

的操作技能,所以要想掌握,必須要付出,并不斷的探索;只要有

一個堅定的求勝信念,沒有解決不了的問題�,F(xiàn)在我已成功解決了

這一問題,在此作一總結(jié),已供遇到這方面問題的網(wǎng)友參考,以免

少走彎路。

網(wǎng)絡上的不少文字都談到了出現(xiàn)中文亂碼時修改MySQL的my.ini

文件中的[mysql]

default-character-set=latin1

與[mysqld]

default-character-set=latin1

這兩處為default-character-set=gb2312(或gbk,utf8);這當然

沒錯,至少在數(shù)據(jù)庫中是肯定可以顯示漢字了,但是在頁面中用語

句查詢卻未必能成功,可能依然是亂碼。又又說在頁面的頁頭加上

<meta http-equiv="Content-Type"

content="text/html;charset=gb2312">;其實這也是無關(guān)緊

要的,就是加了大概不會又多少用。我也作過其他的探索,比如更

改Apache服務器的字符集、重裝ODBC驅(qū)動等等,所以的可能的解

決辦法都試了,最后才知道,也許解決問題的方法并不在此。

   其實解決ASP與MySQL數(shù)據(jù)操作中中文亂碼問的關(guān)鍵在于數(shù)據(jù)連

接,我們只需要在數(shù)據(jù)連接中加入“OPTION=3;stmt=SET

NAMES GB2312”即可,但是位置與格式卻非常重要;也有不少網(wǎng)

友提到了這點,但基本都是在PHP中的編碼,在ASP中的完整格式

則應如下:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>ASP向MySQL數(shù)據(jù)庫中添加數(shù)據(jù)</title>
</head>
<% 
strconnection="driver={mysql odbc 3.51 driver};database=gaorui;server=localhost;uid=root;password=luo;OPTION=3;stmt=SET NAMES GB2312"
set adodataconn = server.createobject("adodb.connection") 
adodataconn.open strconnection

strquery = "select * from user" 
set rs = adodataconn.execute(strquery) 
if not rs.bof then 
%>

<body>
<table>
<tr>
<td><b>姓名</b></td>
<td><b>密碼</b></td>
</tr>
<% 
do while not rs.eof 
%>
<tr>
<td><%=rs("username")%></td>
<td><%=rs("password")%></td>
</tr>
<% 
rs.movenext 
loop 
%>
</table>
<% 
else 
response.write("無數(shù)據(jù).") 
end if 
rs.close 
adodataconn.close 
set adodataconn = nothing 
set rsemaildata = nothing 
%>
</body>
</html>


添加數(shù)據(jù)也應該如此,如:


<% 
username=request.form("username")
password=request.form("password")
strconnection="driver={mysql odbc 3.51 driver};database=gaorui;server=localhost;uid=root;password=luo;OPTION=3;stmt=SET NAMES GB2312"
set conn = server.createobject("adodb.connection") 
conn.open strconnection

set rs=server.CreateObject("adodb.recordset")
sql="select * from user"
rs.open sql,conn,1,3
rs.addnew

rs("username")=username
rs("password")=password
rs.update
rs.close
response.write "<script language=javascript>alert('添加成功!');window.location.href='write.html';</script>"
response.End
%>

   在運用了這種解決方案之后,ASP與MySQL數(shù)據(jù)操作中的中文亂

碼問題就可以成功的解決!