若若地问一句:jsp中session的编码方式是什么?其实是因为乱码问题才问的

tiamoming 2010-09-06 03:17:26
最近使用session跨页面传值,可是当我这样用的时候session.setAttribute("nickname",nkname),注:nkname是汉字。然后跳转到另外一个页面取它出来的时候,就是session.getAttribute("nkname").toString(),它就会乱码成为一个个???。试过了csdn里面好多办法都不行的情况下,用了这样一个方法:Strng getFromSession=new String((String)session.getAttribute( "sessionName ").getBytes( "GBK "), "ISO-8859-1 "); 所以我怀疑,session中的编码方式是不是ISO-8859-1?还是其他的? 还请各位朋友不吝赐教哦,恕我愚钝哈........
...全文
211 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
runnerkiss 2011-10-26
  • 打赏
  • 举报
回复
同求此问题
falconkabu 2010-09-06
  • 打赏
  • 举报
回复
首先 你统一编码 在转换 就OL 那那么麻烦 乱码 问题一个原因 编码不统一 最烦的就是这问题
yousigai 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 tiamoming 的回复:]
最近使用session跨页面传值,可是当我这样用的时候session.setAttribute("nickname",nkname),注:nkname是汉字。然后跳转到另外一个页面取它出来的时候,就是session.getAttribute("nkname").toString(),它就会乱码成为一个个???。试过了csdn里面好多办法都不行的情况下,用了这样一个方法:Strng getFromS……
[/Quote]

你用的那个Strng getFromSession=new String((String)session.getAttribute( "sessionName ").getBytes( "GBK "), "ISO-8859-1 "); 方法的原理是在网页转发时,session会把你原来页面的格式转化成字节码,你这个方法是把你转化成字节码格式的字符再从新编译成ISO的形式显示
ChDw 2010-09-06
  • 打赏
  • 举报
回复
我觉得应该是你另外地方setAttribute的,Session就是内存持有的对象而已,已经不会再做编码转换的

你可以写一个HttpSessionAttributeListener看看是什么地方放进去了。
netsgo 2010-09-06
  • 打赏
  • 举报
回复
晕上面的代码不能加样式
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
netsgo 2010-09-06
  • 打赏
  • 举报
回复
老问题,如果你用的是tomcat,设置一下配置文件,如果用的别的容器,请举一反三。
server.xml文件
 <Connector port="80" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

注意红色字体部分,编码根据你自己情况更改一下,比如GBK....
tiamoming 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chdw 的回复:]我觉得应该是setAttribute的时候nkname已经是乱码了吧,因为再getAttribute应该不存在编码问题的。[/Quote]
我可以确定,存进去的时候是正确的,的确是中文。因为,我试着存进去之后,在不跳转的情况下,本页又取出来,结果是正确的。问题就存在于跨页面取就出现问题。用我题目描述的方法可以解决,所以我很好奇的问了下,session的编码方式。
ChDw 2010-09-06
  • 打赏
  • 举报
回复
我觉得应该是setAttribute的时候nkname已经是乱码了吧,因为再getAttribute应该不存在编码问题的。
HWmsdn 2010-09-06
  • 打赏
  • 举报
回复
实在不行建议写个过滤器


package com.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Filter implements javax.servlet.Filter {

public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest newRequest=(HttpServletRequest)request;
String pathString=newRequest.getRequestURI(); //获取路径


if (pathString.lastIndexOf(".")>0) {
String path=pathString.substring(pathString.lastIndexOf("."),pathString.length());

if (path.equals(".css")||path.equals(".js")) { //判断是否是js或css文件
chain.doFilter(request, response);
}
else {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
chain.doFilter(request, response);
}
}
else {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
chain.doFilter(request, response);
}

}

public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

}




配置webxml.txt


<filter>
<filter-name>filter</filter-name>
<filter-class>com.filter.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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