ASP代碼實(shí)現(xiàn)自動(dòng)清除替換ACCESS(MDB)數(shù)據(jù)庫(kù)的日文字符的
更新時(shí)間:2008年06月12日 23:48:53 作者:
我們都知道ACCESS是ASP的親密伙伴。因?yàn)閮煞N最簡(jiǎn)單的東西碰在一起總能迸發(fā)出火花。
然而,當(dāng)我們過(guò)濾不嚴(yán)格的時(shí)候經(jīng)常出現(xiàn)日文字符,這個(gè)時(shí)候搜索之后就會(huì)出現(xiàn)日文溢出。
此時(shí)我們通常能想到的想法是找一個(gè)exe程序,把這個(gè)問(wèn)題解決掉。我原來(lái)用C#寫(xiě)過(guò)這樣一個(gè)類(lèi)似的程序。
Google里面應(yīng)該能找到我以前寫(xiě)的那個(gè)。就不說(shuō)了。
后來(lái)某一天,我發(fā)現(xiàn)ASP就能實(shí)現(xiàn)。我當(dāng)時(shí)真的覺(jué)得自己太屎了。
不過(guò)ASP的這種方法很不好。容易造成系統(tǒng)崩潰(如果數(shù)據(jù)庫(kù)大)。
所以只是寫(xiě)在這里。算是拋磚引玉。
'下面我解釋一下下:
Function TransferJapanDc9CnInDB()
On Error Resume Next
Err.Clear
Dim objRS,i
Set objRS=Server.CreateObject("ADODB.Recordset")
objRS.CursorType = adOpenKeyset
objRS.LockType = adLockReadOnly
objRS.ActiveConnection=objConn
objRS.Source="SELECT * FROM [blog_Comment]"
objRS.Open()
If (Not objRS.bof) And (Not objRS.eof) Then
For i=1 to objRS.RecordCount
'遍歷,看看有沒(méi)有日文,如果有,就溢出了,隨便搜索一個(gè)東西就行了。搜什么無(wú)所謂。因?yàn)槭潜闅vACCESS只要指針移動(dòng)到日文就溢出。
objConn.Execute("SELECT * FROM [blog_Comment] WHERE comm_ID="&objRS("comm_ID")&" AND [comm_Content] LIKE '%URL%'")
If Err.Number=-2147217900 Then
'因?yàn)槭莖n err繼續(xù) 所以這里找到溢出的錯(cuò)誤代碼,這個(gè)是自己debug出來(lái)的,實(shí)際上不是從什么地方找的。
objConn.Execute("UPDATE [blog_Comment] SET [comm_Content]='"&FilterSQL(Japan2Html(objRS("comm_Content")))&"',[comm_Author]='"&FilterSQL(Japan2Dc9CnHtml(objRS("comm_Author")))&"' WHERE comm_ID="&objRS("comm_ID")&" ")
'這個(gè)就是把日文替換一下,思路是不是很巧妙。恩。不過(guò)數(shù)據(jù)庫(kù)龐大的化,反復(fù)溢出就會(huì)很出問(wèn)題的。內(nèi)存寶寶會(huì)哭的。
Err.Clear
End If
objRS.MoveNext
Next
End If
objRS.Close
Set objRS=Nothing
'www.dc9.cn 07/11/28
End Function
Function Japan2Dc9CnHtml(source)
source=Replace(source,"ガ","ガ")
source=Replace(source,"ギ","ギ")
source=Replace(source,"ア","ア")
source=Replace(source,"ゲ","ゲ")
source=Replace(source,"ゴ","ゴ")
source=Replace(source,"ザ","ザ")
source=Replace(source,"ジ","ジ")
source=Replace(source,"ズ","ズ")
source=Replace(source,"ゼ","ゼ")
source=Replace(source,"ゾ","ゾ")
source=Replace(source,"ダ","ダ")
source=Replace(source,"ヂ","ヂ")
source=Replace(source,"ヅ","ヅ")
source=Replace(source,"デ","デ")
source=Replace(source,"ド","ド")
source=Replace(source,"バ","バ")
source=Replace(source,"パ","パ")
source=Replace(source,"ビ","ビ")
source=Replace(source,"ピ","ピ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"プ","プ")
source=Replace(source,"ベ","ベ")
source=Replace(source,"ペ","ペ")
source=Replace(source,"ボ","ボ")
source=Replace(source,"ポ","ポ")
source=Replace(source,"ヴ","ヴ")
Japan2Html=source
End Function
順便說(shuō)一下,最近我的blog反復(fù)被hack,搞得我很郁悶,因?yàn)槭前⒗嘶蛘呤且陨腥烁傻?,所以沒(méi)法溝通。
我還找不出來(lái)他們是怎么干的。
真的很郁悶。
好了。
接下來(lái)的日子里。我將再發(fā)布一些技術(shù)性的文章。突然感到這個(gè)位子很寶貴的說(shuō)。
Google里面應(yīng)該能找到我以前寫(xiě)的那個(gè)。就不說(shuō)了。
后來(lái)某一天,我發(fā)現(xiàn)ASP就能實(shí)現(xiàn)。我當(dāng)時(shí)真的覺(jué)得自己太屎了。
不過(guò)ASP的這種方法很不好。容易造成系統(tǒng)崩潰(如果數(shù)據(jù)庫(kù)大)。
所以只是寫(xiě)在這里。算是拋磚引玉。
'下面我解釋一下下:
Function TransferJapanDc9CnInDB()
On Error Resume Next
Err.Clear
Dim objRS,i
Set objRS=Server.CreateObject("ADODB.Recordset")
objRS.CursorType = adOpenKeyset
objRS.LockType = adLockReadOnly
objRS.ActiveConnection=objConn
objRS.Source="SELECT * FROM [blog_Comment]"
objRS.Open()
If (Not objRS.bof) And (Not objRS.eof) Then
For i=1 to objRS.RecordCount
'遍歷,看看有沒(méi)有日文,如果有,就溢出了,隨便搜索一個(gè)東西就行了。搜什么無(wú)所謂。因?yàn)槭潜闅vACCESS只要指針移動(dòng)到日文就溢出。
objConn.Execute("SELECT * FROM [blog_Comment] WHERE comm_ID="&objRS("comm_ID")&" AND [comm_Content] LIKE '%URL%'")
If Err.Number=-2147217900 Then
'因?yàn)槭莖n err繼續(xù) 所以這里找到溢出的錯(cuò)誤代碼,這個(gè)是自己debug出來(lái)的,實(shí)際上不是從什么地方找的。
objConn.Execute("UPDATE [blog_Comment] SET [comm_Content]='"&FilterSQL(Japan2Html(objRS("comm_Content")))&"',[comm_Author]='"&FilterSQL(Japan2Dc9CnHtml(objRS("comm_Author")))&"' WHERE comm_ID="&objRS("comm_ID")&" ")
'這個(gè)就是把日文替換一下,思路是不是很巧妙。恩。不過(guò)數(shù)據(jù)庫(kù)龐大的化,反復(fù)溢出就會(huì)很出問(wèn)題的。內(nèi)存寶寶會(huì)哭的。
Err.Clear
End If
objRS.MoveNext
Next
End If
objRS.Close
Set objRS=Nothing
'www.dc9.cn 07/11/28
End Function
Function Japan2Dc9CnHtml(source)
source=Replace(source,"ガ","ガ")
source=Replace(source,"ギ","ギ")
source=Replace(source,"ア","ア")
source=Replace(source,"ゲ","ゲ")
source=Replace(source,"ゴ","ゴ")
source=Replace(source,"ザ","ザ")
source=Replace(source,"ジ","ジ")
source=Replace(source,"ズ","ズ")
source=Replace(source,"ゼ","ゼ")
source=Replace(source,"ゾ","ゾ")
source=Replace(source,"ダ","ダ")
source=Replace(source,"ヂ","ヂ")
source=Replace(source,"ヅ","ヅ")
source=Replace(source,"デ","デ")
source=Replace(source,"ド","ド")
source=Replace(source,"バ","バ")
source=Replace(source,"パ","パ")
source=Replace(source,"ビ","ビ")
source=Replace(source,"ピ","ピ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"ブ","ブ")
source=Replace(source,"プ","プ")
source=Replace(source,"ベ","ベ")
source=Replace(source,"ペ","ペ")
source=Replace(source,"ボ","ボ")
source=Replace(source,"ポ","ポ")
source=Replace(source,"ヴ","ヴ")
Japan2Html=source
End Function
順便說(shuō)一下,最近我的blog反復(fù)被hack,搞得我很郁悶,因?yàn)槭前⒗嘶蛘呤且陨腥烁傻?,所以沒(méi)法溝通。
我還找不出來(lái)他們是怎么干的。
真的很郁悶。
好了。
接下來(lái)的日子里。我將再發(fā)布一些技術(shù)性的文章。突然感到這個(gè)位子很寶貴的說(shuō)。
相關(guān)文章
對(duì)象不支持此屬性或方法: Session.CodePage = 936 解決方法
這篇文章主要介紹了對(duì)象不支持此屬性或方法: Session.CodePage = 936 解決方法,需要的朋友可以參考下2015-07-07ASP上傳漏洞之利用CHR(0)繞過(guò)擴(kuò)展名檢測(cè)腳本
本文部分腳本具有攻擊性,僅供學(xué)習(xí)研究用,請(qǐng)用在合法合理范圍內(nèi),對(duì)造成的損失本人不承擔(dān)責(zé)任,本人也不提供黑客攻擊技術(shù)指導(dǎo)2012-01-01ASP 日期的加減運(yùn)算實(shí)現(xiàn)代碼
今天在工作中遇到了一個(gè)問(wèn)題,需要按時(shí)間查詢(xún),可是查詢(xún)出來(lái)的結(jié)果顯示的不正確。2009-12-12在ASP中用組件檢測(cè)當(dāng)前網(wǎng)卡地址的代碼
在ASP中用組件檢測(cè)當(dāng)前網(wǎng)卡地址的代碼...2007-03-03把網(wǎng)頁(yè)中的(電話(huà),qq等數(shù)字)生成圖片的ASP程序
下面的代碼可以將網(wǎng)頁(yè)中一些防止別人直接復(fù)制或采集的不錯(cuò)的隱藏部分?jǐn)?shù)字信息,例如電話(huà)可以起到防止別人搜索。2008-11-11Android開(kāi)發(fā)sensor旋轉(zhuǎn)屏問(wèn)題解決示例
這篇文章主要為大家介紹了Android開(kāi)發(fā)sensor旋轉(zhuǎn)屏問(wèn)題解決示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03