問題描述:將應(yīng)用部署到weblogic后,只要經(jīng)過sitemesh裝飾過的頁面都出現(xiàn)亂碼,而不經(jīng)過sitemesh裝飾的頁面都正常顯示。
問題原因:sitemesh在裝飾頁面時,如果response的contentType為null,則使用java虛擬機屬性值"file.encoding",而該值與操作系統(tǒng)相關(guān),在windows系統(tǒng)下,該值=GBK.由于頁面本身是utf-8編碼的,經(jīng)過sitemesh裝飾后,使用GBK編碼轉(zhuǎn)行,產(chǎn)生亂碼。
問題解決:在應(yīng)用啟動(如web.xml文件中配置listener,將下面代碼放入listener)時,就將file.encoding屬性設(shè)置為UTF-8編碼,這樣就不會出現(xiàn)sitemesh裝飾后的亂碼問題。
設(shè)置代碼:
Properties prop = System.getProperties();
prop.put("file.encoding", "utf-8");