当前位置: 代码迷 >> Java Web开发 >> 今天刚研究JSP乱码问题,按照大家总结的经验一步步的做,但是始终解决不了。 ...
  详细解决方案

今天刚研究JSP乱码问题,按照大家总结的经验一步步的做,但是始终解决不了。 ...

热度:326   发布时间:2006-06-29 18:12:09.0
今天刚研究JSP乱码问题,按照大家总结的经验一步步的做,但是始终解决不了。
我是在MyEclipse+Eclipse+tomcat5.0 中写的程序,
在一个.jsp中添加了:<%@ page contentType="text/html; charset=GBK" pageEncoding="GBK"%>
和:<%request.setCharacterEncoding("GB2312");%>
然后我保存文件,在保存的过程中,MyEclipse就会询问我:The encoding (ISO-8859-1)cannot convert some characters(such as the one in position 567).Press 'OK' to save anyway(and some characters will be convert '?' in the saved file),or press 'cansel' to return to the editor.

我只能点击OK。然后部署它,可是这个.jsp文件在Tomcat下里面的中文全都是乱码了,我用IE执行它,永远都显示的是乱码。

这要怎么做呢,难道你们都不用MyEclipse+Eclipse+tomcat5.0来编写.jsp吗?
搜索更多相关主题的帖子: JSP  乱码  经验  研究  

----------------解决方案--------------------------------------------------------
在写入数据库之前对来自表单的信息做字符集的转换。
String wordName=new String(request.getParameter("wordName").getBytes("iso-8859-1"),"gb2312") ;
你试试这样行不行。

----------------解决方案--------------------------------------------------------
谢谢你呀,
不过要一个一个的实现呀,那不累死了!
----------------解决方案--------------------------------------------------------
加个过滤器

----------------解决方案--------------------------------------------------------
自从有了过滤器,我还真没把数据库的乱码当一回事
----------------解决方案--------------------------------------------------------
什么过滤器
乱码问题怎么解决?每次显示都是????? 难看死了!
----------------解决方案--------------------------------------------------------
<%@page language="java" contentType="text/html;charset=GB2312"%>

直接写这个就可以了!!!
----------------解决方案--------------------------------------------------------
过滤器代码
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;

public class SetEncodingFilter
implements Filter {

protected String encoding = null;

protected FilterConfig filterConfig = null;

protected boolean ignore = true;

public void destroy() {
this.encoding = null;
this.filterConfig = null;
}

public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(selectEncoding(request));
}
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}


protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}

public FilterConfig getFilterConfig() {
return filterConfig;
}

public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}

}



web.xml关于过滤器的配置
<filter>
<filter-name>SetEncodingFilter</filter-name>
<filter-class>enova.util.SetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

[此贴子已经被作者于2006-7-8 22:22:59编辑过]


----------------解决方案--------------------------------------------------------
,学习中啊
----------------解决方案--------------------------------------------------------
加入:
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
试试,我这样可以。
----------------解决方案--------------------------------------------------------