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