jive中文问题解决方案

03-08-20 袁新宇
jive中文解决方案

1、将所有的jsp页面中的charset由ISO-8859-1改为GBK。

2、在web.xml中加入如下的filter:

<filter>

<filter-name>Set Character Encoding</filter-name>

<filter-class>SetCharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>GBK</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>Set Character Encoding</filter-name>

<servlet-name>jsp</servlet-name>

</filter-mapping>

该类的源文件见附件。

3、在中文环境下重新编译src下面的所有的java文件。

上面三步完成后,基本上就可以输入和显示中文了。

4、在根目录下的header.jsp中加入<%@ page contentType="text/html;charset=GBK" %>

5、将所有页面中的<%@ include file="header.jsp" %>改为<jsp:include page="header.jsp" />

这两步解决头文件的中文问题。

6、修改com.jdon.picture.Upload.java,将36行中的MultipartRequest(request,uploaddir,size * 1024)改为MultipartRequest(request,uploaddir,size * 1024,"GBK")

7、修改upload.jsp,在String icon=request.getParameter(request.getParameter("picname"))后面增加下面这一行

icon=(String)session.getAttribute("picname")+icon.substring(icon.lastIndexOf('.'));

在<input type="hidden" name="picname" value="<%=picname%>">后面增加下面这一行

<%session.setAttribute("picname",picname);%>

这两步解决图片上传时的中文问题。

以上在windows2000+jdk1.4+tomcat4.18+oracle8下测试通过。

下面是SetCharacterEncodingFilter.java的源码

import javax.servlet.Filter;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.FilterChain;

import java.io.IOException;

import javax.servlet.UnavailableException;

public class SetCharacterEncodingFilter implements javax.servlet.Filter {

protected String encoding = "GBK";

protected FilterConfig filterConfig = null;

public void setFilterConfig(FilterConfig config) {

this.filterConfig = config;

}

public FilterConfig getFilterConfig() {

return filterConfig;

}

public void destroy() {

this.encoding = null;

this.filterConfig = null;

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain)

throws IOException, ServletException {

// Select and set (if needed) the character encoding to be used

String encoding = selectEncoding(request);

if (encoding != null) {

request.setCharacterEncoding(encoding);

System.out.println("encoding:"+encoding);

}

// Pass control on to the next filter

chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

this.encoding = filterConfig.getInitParameter("encoding");

System.out.println("³õʼ»¯encoding...");

}

protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}

}

袁新宇
2003-08-20 17:36
html的敏感字符被过滤了,查看源文件可以看到这些内容。

袁新宇
2003-08-20 19:30
linux 下也测试通过。

操作系统:debian2.4.18

数据库:oracle8.1.7

jdk1.4

tomcat4.1.24

环境变量LANG=zh_CN.GBK

观看效果

zhuojun
2003-08-21 09:28
袁兄:一些字符被过滤了,不太好理解,能否将解决方案发给我?

jsjs666@sina.com

多谢!

cjfeng
2003-08-21 10:53
搜索时候的中文关键字问题如何解决?

现在搜索时输入中文后,就变成乱码

猜你喜欢
4Go 1 2 3 4 下一页