欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

中文附件無法下載的問題分析

 更新時(shí)間:2008年12月11日 20:07:56   作者:  
問題:網(wǎng)站上傳的中文名附件無法下載 環(huán)境:win2000/xp 即IIS5.x會出現(xiàn) win2003 IIS6.0正常
詳情:當(dāng)點(diǎn)擊附件后,瀏覽器地址欄已經(jīng)出現(xiàn)了正確路徑(*/測試一下.doc,經(jīng)測試迅雷亦可下載下來),但并沒有出現(xiàn)預(yù)期的打開/下載對話框,而顯示“無法顯示網(wǎng)頁”。但有一個(gè)doc文件文件卻可以。經(jīng)過比對,唯一的區(qū)別在于能下的文件的文件名是11個(gè)漢字,而其他的幾個(gè)分別是8個(gè)或10個(gè)漢字,即偶數(shù)就會出錯(cuò),真是長見識呀。
百度了一下,搜到如下文章。
在網(wǎng)上經(jīng)常會看到有人問這樣的問題:“我的文件名是中文的,放到Web服務(wù)器上讓別人下載,卻總是提示找不到文件,不過文件明明在那里呀?”。這種問題說到底就是編碼的問題,什么UTF8、GBK、BIG5,一看就頭疼。
對于這種問題,網(wǎng)上也有人提出了好多解決辦法,比如對請求的文件名編碼,或者把IE->工具--〉選項(xiàng)--〉高級 最下邊的始終以UTF8編碼發(fā)送的勾去掉,也就是不用UTF8編碼發(fā)送URL,不過因?yàn)镮E是默認(rèn)的以UTF編碼發(fā)送,所以就要每個(gè)人都改IE設(shè)置。
出現(xiàn)這種問題的大致原因就是:IE把URL中的中文以UTF8編碼--->Web服務(wù)器接到URL之后,要進(jìn)行解碼,不同的WEB服務(wù)器解碼規(guī)則也是不同的,不過一般都是以默認(rèn)的字符集來解碼,比如中文系統(tǒng)一般都是GBK吧,這樣解出來的編碼自然就是錯(cuò)的。
我的機(jī)器環(huán)境是:win2000中文+IIS5 ,下面我們來做個(gè)實(shí)驗(yàn)
一、在web根目錄下新建一個(gè)文件,文件名為 "慈勤強(qiáng).txt",內(nèi)容為慈勤強(qiáng)。我們通過網(wǎng)頁訪問http://127.0.0.1/慈勤強(qiáng).txt, 發(fā)現(xiàn)這個(gè)沒問題,能夠正常顯示文件內(nèi)容。
二、我們再建一個(gè)文件 "勤強(qiáng).txt",內(nèi)容為勤強(qiáng)。我們通過網(wǎng)頁訪問http://127.0.0.1/勤強(qiáng).txt ,結(jié)果發(fā)現(xiàn),無法找到網(wǎng)頁。
三、我們再建一個(gè)文件 "鍕ゅ己.txt" ,內(nèi)容為 “亂碼”。我們通過網(wǎng)頁訪問http://127.0.0.1/鍕ゅ己.txt ,發(fā)現(xiàn)這個(gè)也沒有問題,可以正常顯示。
四、這時(shí),我們再訪問一下http://127.0.0.1/勤強(qiáng).txt ,結(jié)果發(fā)現(xiàn)又可以訪問了,但是很遺憾,出現(xiàn)的內(nèi)容并不是我們希望的“勤強(qiáng)”,而是"亂碼",也就是"鍕ゅ己.txt"文件的內(nèi)容。
至此,大家應(yīng)該可以明白一點(diǎn)了,就是"勤強(qiáng)"經(jīng)過UTF8編碼以后,IIS再用GBK解碼,就解碼成了"鍕ゅ己"。關(guān)于編碼是挺繁瑣的一件事情,在這里就不深入的分析了,大家只要知道UTF8編碼,對于中文會編碼成3個(gè)字節(jié),而Unicode\GBK都是兩個(gè)字節(jié)的. 比如 勤強(qiáng) 兩個(gè)字經(jīng)過UTF8編碼以后變成了 %E5%8B%A4%E5%BC%BA ,一共6個(gè)字節(jié)了,%E5%8B%A4 是勤%E5%BC%BA 是強(qiáng)。
IIS解碼則是按照兩個(gè)字節(jié)一個(gè)漢字的方式來解碼,也就是會把 %E5%8B 按照gbk解碼成一個(gè)字, %A4%E5 一個(gè)%BC%BA 代表一個(gè)字。 我們可以去查GBK編碼表,發(fā)現(xiàn) E58B 是鍕, A4E5是ゅ,BCBA是己。
所以,對于IIS來說,如果非要用中文文件名的話, 中文的字?jǐn)?shù)就應(yīng)該是奇數(shù)的,就應(yīng)該不會有問題(我這臺機(jī)器得出的結(jié)論,可能不適合別的),比如 詞.txt 茨此次.txt 都可以正常顯示,偶數(shù)的就會出問題了,比如"我們都是小孩.txt"。對于其他的Web 服務(wù)器,比如apache之類的,可能就不是這個(gè)樣子的了,具體也不清楚。

相關(guān)文章

最新評論