國內最大的酷站演示中心!
這幾天研究了一下jspwiki把網頁存到硬盤上的代碼,想出了一個解決的辦法. jspwiki把文件名轉換成%xx的格式是為了能在硬盤上存儲各個國家語言的文件,
如果我們只在中文環境下使用,則沒有必要進行這樣的轉換.
jspwiki里的pageprovider和attachmentprovider負責了上面的轉換,
而這兩個provider可以在jspwiki.properties里面設置,所以我們繼承一下
jspwiki里提供的類,再在配置文件里設置一下,很容易就讓jspwiki不進行文
件名轉換了.
我是通過繼承nativefilenameversioningfileprovider和basicattachmentprovider
類實現子類的.可惜basicattachmentprovider中負責文件名轉換的方法是static的,我在
子類里沒辦法把它重載掉,這個問題已經向jspwiki的開發者提出修改意見了.現在page名
可以存為中文了,附件名還要等到jspwiki的basicattachmentprovider修改了以后才能
實現.
附件里是編譯完的代碼,把它拷貝到jspwiki的lib目錄里,再在jspwiki.properties里設置
"jspwiki.pageprovider =net.sf.startemplate.nativefilenameversioningfileprovider"
就可以把page存為中文名的文件了.這個provider和已有的%xx形式的page不能正常工作,
需要把這些page的名稱改成未編碼的中文格式.
至于utf8編碼的文件用notepad修改后會在最前面添加3個字符,那都是微軟做的孽,不用微軟的
或者基于微軟的文本編輯器就行了.(微軟為了識別unicode的編碼,在文件最開始加了標識符,
而其他公司并不承認這個標準,所以才導致這些標識符會被顯示出來)
瀏覽器對網址會轉換成%xx形式后再向服務器,服務器收到以后也都有相應的逆向轉換,這個應該
沒有什么問題.
很高興和你交流!!
以下是我的代碼:兩個provider和一個工具類
======= 2005-09-07 22:26:40 您在來信中寫道:=======
> dengber,您好!
>
> 我從sf.net上面下載了你的startemplate,看看不錯。
>
> 我最近正在將jspwiki部署到我公司上,作為一種工作日志、工作總結、技術文章的共享平臺。有個問題想問你一下,不知道你是
否了解,如何讓jspwiki里面用中文寫的超級鏈接,所形成的實際文件名,可以成為中文編碼呢?因為目前都會變成%xx%xx的形式
來表示中文。
>
> 我知道jspwiki是利用java寫的,它的中文處理機制,完全就是java的機制,就是將所有編碼,統一成utf-8編碼。而windows200
0或以上的系統的默認編碼,一般是unicode,這兩者不太一樣。我不知道你試過直接編輯jspwiki的數據文件沒,我試過,發現只
能利用ultraedit之類的可以支持utf-8的編輯器,才可以成功編寫,而如果利用windows自帶的notepad來編輯的話,其文件頭部
會自動被加上3個字節。
>
> 另外,當在瀏覽器里面,鼠標指向一個含中文字符的鏈接的時候,會被自動轉換成可能試url所要求的表示形式,就是上述的兩個
加了百分號的數字來表示一個漢字的方式。
>
> 所以我想,要想解決這個問題,是不是需要解決上述兩個問題。
>
> 不知道你是否研究過這個,請不吝賜教?! ?/div>