IIS+ASP+MySQL8.0+中文乱码解决方案(2019.7)
困擾了我多天的ASP與MySQL操作中中文亂碼問(wèn)題終于得到了解決,真是很有成就感;多天以來(lái),在探索使用ASP查詢以及寫(xiě)入MySQL數(shù)據(jù)庫(kù)中漢字的成功實(shí)現(xiàn),我花費(fèi)了大量的時(shí)間,幾乎查看了網(wǎng)絡(luò)上所有關(guān)于ASP結(jié)合MySQL的文字,但是盡管看的多,收效卻甚微,原因在于,MySQL一般是與PHP結(jié)合使用,基本上很難找到一個(gè)在windows系統(tǒng)下使用ASP操作MySQL的成功案例,更難找到這方面的問(wèn)題解決方案,所以,要想解決這一問(wèn)題,只能從其他的程序語(yǔ)言中探索其中的奧妙。大概越是高級(jí)的東西,越需要較高的操作技能,所以要想掌握,必須要付出,并不斷的探索;只要有一個(gè)堅(jiān)定的求勝信念,沒(méi)有解決不了的問(wèn)題。
現(xiàn)在我已成功解決了這一問(wèn)題,在此作一總結(jié),已供遇到這方面問(wèn)題的網(wǎng)友參考,以免少走彎路。
網(wǎng)絡(luò)上的不少文字都談到了出現(xiàn)中文亂碼時(shí)修改MySQL的my.ini文件中的
[mysql]default-character-set=latin1與
[mysqld]default-character-set=latin1這兩處為default-character-set=gb2312(或gbk,utf8);這當(dāng)然沒(méi)錯(cuò),至少在數(shù)據(jù)庫(kù)中是肯定可以顯示漢字了,但是在頁(yè)面中用語(yǔ)句查詢卻未必能成功,可能依然是亂碼。
或者說(shuō)更改數(shù)據(jù)庫(kù)或者mysql字符集
查看mysql支持的字符集
show character set;查看數(shù)據(jù)庫(kù)編碼
show variables like ‘character_set%’;查看當(dāng)前mysql使用的字符集
show variables like ‘character%’;解析:
character_set_client:客戶端請(qǐng)求數(shù)據(jù)的字符集
character_set_connection:客戶機(jī)與服務(wù)器連接的字符集
character_set_database:默認(rèn)數(shù)據(jù)庫(kù)的字符集;如果沒(méi)有默認(rèn)數(shù)據(jù)庫(kù),就會(huì)使用 character_set_server指定的字符集(建議不要隨意更改)
character_set_filesystem:把 character_set_client轉(zhuǎn)換character_set_filesystem (默認(rèn)為binary, 不做任何轉(zhuǎn)換)
character_set_results:返回給客戶端的字符集
character_set_server:數(shù)據(jù)庫(kù)服務(wù)器的默認(rèn)字符集
character_set_system:系統(tǒng)字符集,默認(rèn)utf8。(用于數(shù)據(jù)庫(kù)的表、列和存儲(chǔ)在目錄表中函數(shù)的名字)
character_sets_dir:mysql字符集文件的保存路徑
產(chǎn)生亂碼的原因
character_set_client與實(shí)際不符合?
character_set_results與客戶端頁(yè)面不符合
查看當(dāng)前數(shù)據(jù)庫(kù)的校對(duì)規(guī)則
show variables like ‘collation%’;解析:
value的命名規(guī)則: 字符集名字+語(yǔ)言+后綴
collation_connection :當(dāng)前連接的字符集
collation_database :當(dāng)前日期的默認(rèn)校對(duì)
collation_server :服務(wù)器的默認(rèn)校對(duì)
后綴的含義:?
ci:不區(qū)分大小寫(xiě)?
cs:區(qū)分大小寫(xiě)?
bin:二進(jìn)制排序
更改字符集
解決亂碼問(wèn)題(一般如下)
或
set names utf8;或
在mysql的my.cnf的配置文件中修改或添加下列:
[client]? default-character-set = utf8[mysqld]? character_set_server = utf8又又說(shuō)在頁(yè)面的頁(yè)頭加上
<meta http-equiv="Content-Type"content="text/html;charset=gb2312">;其實(shí)這也是無(wú)關(guān)緊要的,就是加了大概不會(huì)又多少用。我也作過(guò)其他的探索,比如更改Apache服務(wù)器的字符集、重裝ODBC驅(qū)動(dòng)等等,所以的可能的解決辦法都試了,最后才知道,也許解決問(wèn)題的方法并不在此。
其實(shí)解決ASP與MySQL數(shù)據(jù)操作中中文亂碼問(wèn)的關(guān)鍵在于數(shù)據(jù)連接,我們只需要在數(shù)據(jù)連接中加入
"OPTION=3;stmt=SET NAMES GB2312"即可,但是位置與格式卻非常重要;也有不少網(wǎng)友提到了這點(diǎn),但基本都是在PHP中的編碼,在ASP中的完整格式
則應(yīng)如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf8"> <title>ASP向MySQL數(shù)據(jù)庫(kù)中添加數(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 strconnectionstrquery = "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("無(wú)數(shù)據(jù).")?end if?rs.close?adodataconn.close?set adodataconn = nothing?set rsemaildata = nothing?%></body> </html>添加數(shù)據(jù)也應(yīng)該如此,如:
<%?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 strconnectionset rs=server.CreateObject("adodb.recordset")sql="select * from user"rs.open sql,conn,1,3rs.addnewrs("username")=usernamers("password")=passwordrs.updaters.closeresponse.write "<script language=javascript>alert('添加成功!');window.location.href='write.html';</script>"response.End %>???在運(yùn)用了這種解決方案之后,ASP與MySQL數(shù)據(jù)操作中的中文亂碼問(wèn)題就可以成功的解決!
參考文章
https://blog.csdn.net/GX_1_11_real/article/details/80748227
https://blog.csdn.net/zhaojunjie_dream/article/details/79979672
https://www.cnblogs.com/liyingxiang/p/5877764.html
總結(jié)
以上是生活随笔為你收集整理的IIS+ASP+MySQL8.0+中文乱码解决方案(2019.7)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2019牛客暑期多校训练营(第四场)
- 下一篇: IIS+ASP+MySQL8.0+数据库