最近感受了一下Grails,是快捷了很多。創建好持久對象后,CRUD的界面就可以立即生成,很吸引人。所以打算更深入的學習一下,看看能否用在正式產品中。
慣例,關注的第一個問題是編碼問題,這是任何技術產品化的第一步。
首先,我在保存信息時填入了一些中文,保存沒有問題。使用hsqldb時本身是unicode的。使用mysql的話,將編碼集指定為utf8同樣沒有問題。這應該受益與jdbc本身,以前解決jdbc編碼問題的經驗應該都適用。grails所做的主要是在http協議的處理中都采用了utf8。
其次,我要看看在程序文件中使用中文。最常見的情況一定是在gsp中寫中文了,我把gsp中的一些提示文字,如Edit,List,Create,Show等,都修改成中文。情況不錯,這些中文都能正確顯示。
不過我注意到gsp中沒有像jsp那樣的pageEncoding聲明,估計是采用了系統默認字符集編譯運行的,如果同樣的代碼換了環境會怎么樣?我把同樣的代碼拿到ubuntu上跑了一下,使用grails直接運行不能顯示正確的中文,顯然是在使用utf8作為默認字符集進行編譯和運行的。我又嘗試了一下把在windows上打包好的war放在tomcat下運行,問題是一樣的在windows下正確顯示的內容在linux下顯示不了。
應該算是個典型的發布問題吧,打包好的代碼不能跨平臺(其實是不同字符集環境)。去查閱了一下官方網站上有關gsp的文檔,內容太少了,只提到對應的servlet程序可以接收一個encoding的初始化參數。但是不能確定這個參數是用于讀取gsp文件的?還是,指定http協議使用的字符集的。而且使用的類似乎跟grails集成的也不一樣,所以無功而返。今天把grails的源碼都拿下來找一找,看看是否有線索。
在 XXXControler 中使用中文字符也有類似的情況,不過應該比較不常用到的,所以問題并不嚴重。也許grails將來能夠將 Controler 都直接編譯成class文件以后再發布,那樣就能少一些編碼問題。
下次有時間看看國際化方面的情況
posted on 2007-09-04 12:58
Tiger F 閱讀(1183)
評論(2) 編輯 收藏