还是乱码问题???~~~~~~~~~

Davidtwins110 2008-05-24 12:18:54
我用的环境是mysql5.0,tomcat6.0,jdk6.0可是在开发jsp时无论怎样设置编码都不能支持中文显示啊!
<%@ page contentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("GBK") ;
%>
在页面中添加了以上转码代码可是在这个页面中得到的上个页面的值还是乱码??
这怎么解决呢??!!
...全文
58 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ADMIN1359984276 2008-05-26
  • 打赏
  • 举报
回复
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

<init-param>

<param-name>singleSession</param-name>

<param-value>true</param-value>

</init-param>

</filter>
<filter-mapping>
<filter-name>opensession</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>


这个是过滤器web的配置文件
其实方法很多的
ADMIN1359984276 2008-05-26
  • 打赏
  • 举报
回复
package filterEncoding;

import java.io.IOException;
import java.util.Enumeration;

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.http.HttpServletRequest;

public class FilterEncoding implements Filter{

protected String encoding = null;

protected FilterConfig filterConfig = null; //配置信息

protected boolean ignore = true; // 是否编码

/**
* 初始化配置
*/
public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig; //配置信息

this.encoding = filterConfig.getInitParameter("encoding");//获的GBK编码

String value = filterConfig.getInitParameter("ignore"); //是否为真

if (value == null) { //等于空 也为真

this.ignore = true;

} else if (value.equalsIgnoreCase("true")) {//等于true 也为真

this.ignore = true;

} else if (value.equalsIgnoreCase("yes")) { //等于YES 也为真

this.ignore = true;

} else {

this.ignore = false; //否则为假

}

}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO 自动生成方法存根
// 判断编码为真或者编码为空 为空调用 selectEncoding()方法 返回 GBK编码

if (ignore || (request.getCharacterEncoding() == null)) {

String encoding = selectEncoding(request);

if (encoding != null) { // 否则设置为 GBK编码

response.setCharacterEncoding(encoding);
request.setCharacterEncoding(encoding);

}
}

Enumeration<String> enumeration = ((HttpServletRequest)request).getParameterNames();

if(((HttpServletRequest)request).getMethod().equalsIgnoreCase("get")){

while(enumeration.hasMoreElements()){

String name=enumeration.nextElement().toString();

//获得他的编码方式 改为GBK 默认的编码都为ISO-8859-1

String ok=new String(request.getParameter(name)
.getBytes("iso-8859-1"),"GBK");
System.out.println(name+"-----"+ok);
request.setAttribute(name,ok);

}

}

chain.doFilter(request, response);
}

/**
* @param request 该方法设置 请求的编码为 GBK
* @return 返回编码后 字符 ( GBK )
*/
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
public void destroy() {
this.encoding = null; //释放资源
this.filterConfig = null;
}


}
ADMIN1359984276 2008-05-26
  • 打赏
  • 举报
回复
过滤器啊 很简单的
太乙 2008-05-24
  • 打赏
  • 举报
回复
你是要得到上个页面传来的参数还是什么?
如果是参数的话,可以用



new String(request.getParameter("test").getBytes("ISO-8859-1"),"GB2312");

gj_wrxz 2008-05-24
  • 打赏
  • 举报
回复
这是 你的eclipse里面的设置的不对

按ALT+Enter 把里面的Resource

Text file encoding 有个编码,把编码改成gbk
Davidtwins110 2008-05-24
  • 打赏
  • 举报
回复
刚刚又测试了,4楼的方法只适合“get”的提交方式,可是用“post”方式又是乱码啊~!!!!!!
Davidtwins110 2008-05-24
  • 打赏
  • 举报
回复
4楼方法正解!谢过!~
ADMIN1359984276 2008-05-24
  • 打赏
  • 举报
回复
方法很多的,写过滤链,拦截器,还有就是在安装目录加参数C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml的
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />里面加个URIEncoding="GBK"
Davidtwins110 2008-05-24
  • 打赏
  • 举报
回复
我不是在eclipse开发的,用的外接服务器,editPlus中编辑的!
2楼的方法不适合传递较多的值啊!

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧