首页 > Java技术 > 解决hscms发布的网站乱码问题的方法
201211月13

解决hscms发布的网站乱码问题的方法

背景

       最近利用hscms给客户发布了一个网站,利用hscms里面的分发功能,将网站分发到tomcat之后,网站访问时是乱码,当时这个问题一直解决不了,最后花了一整天的时间才解决掉,所以将解决方法整理下来,供以后做网站时参考之用。

问题描述

       网站的基本实现原理是这样的,网站首页是用jsp进行开发的,首页上面的很多区域页面是通过hscms发布的,然后我们在首页的jsp页面利用再通过include的方式引用发布的静态页面具体的代码如下:

<jsp:include page="include/login_include_0.html"></jsp:include>

其它地方的编码说明:
       1、hscms模板中定义的编码为UTF-8
       2、hscms不管模板定义为UTF-8的还是GBK的,生成的静态页面都是GBK的(系统底层实现是这样的)
       3、动态jsp所属的项目编码是是UTF-8
       4、Tomcat编码设置的是UTF-8

问题分析与解决

       经过对上面的判断,最后确定原因出在jsp对发布之后的静态页面进行include时出现了问题,所以我们就需要在项目加载静态页面、tomcat读取静态页面的地方做文章,最后具体的解决办法如下:
       1、Tomcat中对SSI的输入输出编码进行设置,将编码设置为GBK的,如果不清楚怎么开启ssi和设置编码,可以参考我的这篇博文:tomcat开启与配置ssi
       2、动态项目的Web.xml中加入jsp-config配置,使读入的include页面的编码为GBK,具体加入的代码如下:

<jsp-config>
	<jsp-property-group>
		<description>html encoding example</description>
		<display-name>JSPConfiguration</display-name>
		<url-pattern>*.html</url-pattern>
		<el-ignored>true</el-ignored>
		<page-encoding>UTF-8</page-encoding>
		<scripting-invalid>false</scripting-invalid>
		<include-prelude></include-prelude>
		<include-coda></include-coda>
	</jsp-property-group>
</jsp-config>

       经过上面的方法,最终问题得到了解决。

文章作者: iitshare
本文地址:http://www.iitshare.com/garbled-address-hscms-website.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

更多
本文目前尚无任何评论.

发表评论