国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

另一篇:用XMLHTTP Post/Get HTML頁面時的中文亂碼問題之完全Script處理方案

另一篇:用XMLHTTP Post/Get HTML頁面時的中文亂碼問題之完全Script處理方案

更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

用XMLHTTP Post/Get HTML頁面時的中文亂碼問題之完全Script解決方案

關鍵詞:VBScript, ASP, JavaScript, Java, XML

以前我曾經貼過一篇用XMLHTTP Post Form 的帖子,那里的代碼中我Post E文的Value毫無問題,但是后來發現Post含有中文的表單時會出現亂碼,原因當然是UTF-8 和GB2312 之間的轉換問題了!TNND,打倒GB2312!大家都用UTF8多好。

用XMLHTTP Post Form時的表單亂碼有兩方面的原因——Post表單數據時中文亂碼;服務器Response被XMLHTTP不正確編碼引起的亂碼。換句話說,本文主要解決兩個問題——怎樣正確Post中文內容&怎樣正確顯示得到的中文內容。

Part I Post中文內容

先看看E文的表單是怎么提交的:

<SCRIPT language="JavaScript">
strA = "submit1=Submit&text1=scsdfsd";
var oReq = new ActiveXObject("MSXML2.XMLHTTP");
oReq.open("POST","http://ServerName/VDir/TstResult.asp",false);
oReq.setRequestHeader("Content-Length",strA.length);
oReq.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
oReq.send(strA);
</ScRIPT>

如果把strA = "submit1=Submit&text1=scsdfsd";換成:
strA = "submit1=Submit&text1=中文";

你會發現提交上去的東東根本不對,ASP中Request.Form("Text1")根本取不到值。俺用Request.BinaryRead把一個HTML Form中的Post內容寫出來看了看,才發現問題——Form提交時也要編碼的,編碼后的中文是類似于%??%??的轉義字符,比如“中文”就被編碼為:%D6%D0%CE%C4。呵呵,也怪俺笨,人家CONTENT-TYPE里明明寫的清清楚楚——application/x-www-form-urlencoded,urlencoded嘛當然就是這個樣子了。既然這樣,那我們也知道該怎么辦了——自己做轉換,代碼見下:

<SCRIPT language="VBScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCodeAnd &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) &"%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function

strA = URLEncoding("submit1=Submit&text1=中文")
oReq = CreateObject("MSXML2.XMLHTTP")
oReq.open "POST","http://ServerName/VDir/TstResult.asp",false
oReq.setRequestHeader "Content-Length",Len(strA)
oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
oReq.send strA
</ScRIPT>

(在這里俺把前面的JavaScript的代碼改成了VBScript,不是吃飽了撐的沒事干,原因見后)

Part II.正確顯示得到的中文內容

OK,如果你在Server端把Form的內容寫到數據庫/文件的話,你在那里看到的中文毫無問題,但是,假如你想看看Server的Response——問題來了:如果Response的結果不是XML,XMLHTTP.responseXML里當然是不會有東東的,那就用responseText好了,在代碼的最后加一句:

alert(oReq.responseText)
看看俺們辛勤勞動的結果:P

但是但是.....怎么所有的中文全變成了方格? (我打不出來,有興趣自己去試,也不用Post,Get一個含有中文的網頁就可以發現了。)

原因很簡單:XMLHTTP得到Response時假定Response是UTF8編碼的,如果Response是XML,那還可以通過encoding來指定編碼,但HTML就不行了。(見鬼的GB2312,再次打倒!)所以它把含GB2312編碼的HTML當成UTF8格式,不出錯才有鬼!

不過好在還有補救的辦法:XMLHTTP的responseBody 屬性里包含的可是未解碼的Resonse——"a raw undecoded bytes as received directly from the server" :),唯一的問題是,responseBody返回的是一個unsigned bytes數組,我們怎么去訪問它,怎么把它轉換成BSTR?

這就是為什么我在上面把代碼改成VBScript的原因——VBScript Can do it,but JavaScript Cannot!

代碼見下:
<SCRIPT language="VBScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCodeAnd &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) &"%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function

Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function

strA = URLEncoding("submit1=Submit&text1=中文")
oReq = CreateObject("MSXML2.XMLHTTP")
oReq.open "POST","http://ServerName/VDir/TstResult.asp",false
oReq.setRequestHeader "Content-Length",Len(strA)
oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
oReq.send strA
alert bytes2BSTR(oReq.responseBody)
</ScRIPT>

嘿嘿,是不是很簡單啊,用這個再試試看?一切OK!

(順便說說byte(),這個東東在VBScript里的表現只能用妖來形容——對它調用VarType 返回8209——vbArray + vbByte,用LBound、UBound能拿到數組的上界下界,但是就是不能用name(i)的形式訪問,搞得我以為在Script里根本沒法處理這種類型,在bytes2BSTR函數里可以看到我是把它當成String來處理的——LenB/MidB什么的,發現這點純屬意外——我開始往這個函數里傳的是XMLHTTP.responseText,想一個Byte一個Byte地看看里面到底有點什么,后來一時性起把responseText改成responseBody,結果就中獎了,哈哈)

最后的廢話:
1、以上代碼在MSXML Parser 3 Release+VBScript 5.5環境下通過。那位兄弟有早一點版本的Script可以幫我試試看能不能成。
2、一直以為JavaScript vs VBScript應該是JavaScript略好,所以有時候想徹底拋棄VBScript,ASP Server/Client統統用JavaScript,看來未必是個好主意。


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        一区二区三区在线视频播放| 国产精品色哟哟| 精品乱码亚洲一区二区不卡| 视频一区在线视频| 日韩视频免费观看高清完整版| 免费高清不卡av| 国产日本一区二区| 91香蕉视频在线| 亚洲国产中文字幕在线视频综合| 欧美丝袜丝nylons| 国产在线精品免费av| 国产精品成人免费| 欧美日韩成人综合在线一区二区| 奇米色一区二区| 国产精品成人午夜| 在线播放91灌醉迷j高跟美女| 久久草av在线| 亚洲三级电影网站| 日韩欧美国产一区二区在线播放| 成人激情小说网站| 美女视频黄 久久| 亚洲欧美日韩国产另类专区| 日韩精品一区二区三区swag| 99国产精品一区| 国产中文字幕一区| 日韩精品视频网| 综合久久久久久久| 久久久激情视频| 日韩亚洲欧美在线| 欧美日韩色一区| 白白色亚洲国产精品| 久久不见久久见中文字幕免费| 亚洲欧美日韩在线播放| 久久精品一区二区三区四区| 91精品欧美一区二区三区综合在| jizz一区二区| 成人白浆超碰人人人人| 国产自产高清不卡| 久久精品国产99国产| 三级不卡在线观看| 婷婷国产在线综合| 亚洲自拍另类综合| 亚洲激情图片一区| 亚洲色图视频免费播放| 国产欧美日韩亚州综合| 久久嫩草精品久久久久| 精品国产乱码久久久久久闺蜜| 在线成人av网站| 日韩午夜在线观看| 精品久久国产字幕高潮| 精品国产伦一区二区三区观看方式| 在线91免费看| 欧美xxxxx牲另类人与| 精品国产欧美一区二区| 久久先锋影音av鲁色资源网| 精品日韩在线一区| 国产午夜精品久久| 国产精品色婷婷久久58| 成人免费一区二区三区视频| 综合精品久久久| 亚洲国产一区二区a毛片| 亚洲成人在线网站| 久久精品国产77777蜜臀| 国产精一区二区三区| 成人精品小蝌蚪| 91极品美女在线| 在线不卡一区二区| 久久久亚洲综合| 亚洲视频在线一区二区| 亚洲成av人片在线观看| 麻豆精品新av中文字幕| 国产成人精品午夜视频免费| 91影视在线播放| 91精品国产综合久久精品性色| 日韩一级二级三级| 国产精品色呦呦| 视频一区国产视频| 国产不卡视频一区| 欧美日韩免费一区二区三区| 日韩欧美精品在线视频| 国产精品久久精品日日| 午夜电影网一区| 国产不卡视频在线观看| 欧美性一级生活| 久久久久久亚洲综合| 亚洲综合在线电影| 国产精品77777| 欧美日韩中文字幕精品| 久久久久97国产精华液好用吗| 一区二区三区视频在线观看| 裸体健美xxxx欧美裸体表演| 99这里只有久久精品视频| 欧美一级生活片| 一区二区三区美女| 国产毛片精品一区| 制服丝袜成人动漫| 一区二区三区四区国产精品| 国产精品一二三四| 日韩亚洲欧美综合| 亚洲午夜在线视频| eeuss鲁片一区二区三区在线看| 欧美放荡的少妇| 成人欧美一区二区三区白人| 精品一区二区日韩| 欧美日韩亚洲综合| 亚洲日穴在线视频| 成人免费毛片a| 26uuu国产一区二区三区| 亚洲精品视频免费观看| 国产精品中文有码| 欧美一区二区三区视频| 一级特黄大欧美久久久| 国产成人精品三级麻豆| 日韩欧美一级片| 亚洲动漫第一页| 色老汉一区二区三区| 中文成人综合网| 国产精品综合久久| 欧美成人国产一区二区| 亚洲国产精品嫩草影院| 91在线观看一区二区| 国产精品免费丝袜| voyeur盗摄精品| 国产人成一区二区三区影院| 蜜臀99久久精品久久久久久软件| 欧美日韩国产另类一区| 樱花草国产18久久久久| 日本精品裸体写真集在线观看| 综合精品久久久| 在线一区二区三区做爰视频网站| 国产精品盗摄一区二区三区| 99热在这里有精品免费| 亚洲美女视频一区| 欧美伊人久久大香线蕉综合69| 亚洲欧美综合在线精品| 色香蕉成人二区免费| 亚洲尤物视频在线| 这里只有精品电影| 激情文学综合插| 国产精品五月天| 在线免费观看视频一区| 日韩精品电影在线| 欧美精品一区二区三区久久久| 国产精品91一区二区| 最新国产成人在线观看| 91国内精品野花午夜精品 | 激情小说欧美图片| 久久久久久久久久久久久女国产乱| 精品一区二区三区视频在线观看| 欧美mv和日韩mv的网站| 国产盗摄视频一区二区三区| 中文字幕色av一区二区三区| 在线观看一区二区视频| 麻豆91在线观看| 国产精品美女久久久久高潮| 一本大道综合伊人精品热热| 日韩精品视频网| 日本一区二区高清| 欧美剧情片在线观看| 精品一区二区三区在线播放| 国产女同性恋一区二区| 欧美在线免费观看视频| 日韩电影在线观看一区| 国产偷v国产偷v亚洲高清| 91亚洲国产成人精品一区二区三| 婷婷开心激情综合| 国产精品久久久久久久久久免费看 | 中文字幕在线一区免费| 欧美亚洲图片小说| 国产精品一区二区三区网站| 日韩伦理av电影| 日韩视频在线一区二区| 成人午夜激情视频| 日韩成人dvd| 亚洲精品第1页| 国产日韩欧美不卡在线| 精品视频1区2区3区| 不卡影院免费观看| 免费成人在线网站| 亚洲三级在线观看| 久久综合色之久久综合| 中文字幕一区在线| 成人sese在线| 国产乱码精品一区二区三区五月婷 | 欧美一级久久久久久久大片| 美女爽到高潮91| 国产精品久久久久久久久免费相片 | 国产福利91精品一区二区三区| 亚洲精品免费视频| 韩国欧美一区二区| 久久香蕉国产线看观看99| 99re6这里只有精品视频在线观看| 欧美一区二区三区精品| 国产精品乱码久久久久久| 成人午夜视频在线观看| 久久久精品综合| 欧美精品一区二区久久婷婷 | 欧美一区二区大片| 日韩精品一二三| 欧美激情在线看|