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