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