最近感受了一下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 阅读(1177)
评论(2) 编辑 收藏