本帖最后由 cuihaiyang 于 2011-08-17 15:08:29 编辑

解决方案 »

  1.   

    我在tomcat下也没有出现乱码,没有deploy到jboss中去,      乱码,我觉得还是改源码比较好。。
      

  2.   

    很久没用weblogic了 都忘了
      

  3.   

    我在Tomcat下调试sitemesh,发现运行到com.opensymphony.module.sitemesh.filter.Buffer.getContents()方法中bufferedWriter不为null,而bufferedStream为null,所以就执行了bufferedWriter.toCharArray()方法,而没有执行TextEncoder.encode(byte[] data, String encoding)方法。所以我认为修改TextEncoder.DEFAULT_ENCODING变量没有作用,由于下载的sitemesh2.4源码有些错误所以本人没有修改后打包测试。
      

  4.   

    Tomcat下的乱码好解决,weblogic不知道,百度吧
      

  5.   

    这也不全是乱码,sitemesh装饰页面的中文显示正常,被装饰的内容中文乱码,还是与sitemesh有关。
      

  6.   

    爱莫能助。。   我的渲染代码,是从openfire中抠出来的,然后自己加以改造。也是基于sitemesh
      

  7.   

    在Eclispe下使用Weblogic单步调试了一下,发现Tomcat和Weblogic下com.opensymphony.module.sitemesh.filter.Buffer类的getContents()方法执行方式还真不一样,在Tomcat下是通过bufferedWriter.toCharArray()返回数据,而weblogic下是通过TEXT_ENCODER.encode(bufferedStream.toByteArray(), encoding),同时这个encoding参数为null,所以使用了TextEncoder.DEFAULT_ENCODING,而System.getProperty("file.encoding")的值为GBK,与页面编码UTF-8不一致导致乱码。