日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

IIS+ASP+MySQL8.0+中文乱码解决方案(2019.7)

發(fā)布時(shí)間:2024/10/5 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IIS+ASP+MySQL8.0+中文乱码解决方案(2019.7) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

困擾了我多天的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 character_set_client = utf8;set character_set_server = utf8;set character_set_connection = utf8;set character_set_database = utf8;set character_set_results = utf8;set collation_connection = utf8_general_ci;set collation_database = utf8_general_ci;set collation_server = utf8_general_ci;

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。