A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jomes 中级黑马   /  2013-6-8 12:36  /  1543 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

jsp页面获取中文
String name = request.getAtrriubt("userName");
  name = new String(name.getByte("ISO-8859-1"),"gb2312")
还有别的简便方法解决乱码吗

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
我知道的解决办法
<1>.适用于任何提交方式的乱码:
   new String(s.getBytes("不识别中文的字符编码"), "识别中文的字符编码");  这就是你提到的方法
但是 这种方式只能进行局部解决问题  那个字符串可能出现乱码的时候  就这么重构一下即可 不是一种全局的方式
<2>.如果是post请求出现乱码:response.setCharacterEncoding("识别中文的字符编码");
<3>.如果是get请求出现的乱码:如果你的服务器是Tomcat的话  可以找到server.xml标签 修改里面的Connector标签  将其URIEncoding设置为UTF-8
<4>.还有一种比较麻烦的方式 就是在web.xml中配置过滤器来处理字符编码
举例子:
  1. package com.filter;

  2. import java.io.IOException;

  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;

  11. /**
  12. * 对页面和所有的Servlet进行页面的中文转码
  13. *
  14. */
  15. public class EncodingFilter implements Filter {

  16.         private String encoding = null;
  17.         private FilterConfig config = null;

  18.         public void destroy() {
  19.                 // 销毁
  20.                 this.config = null;
  21.                 this.encoding = null;

  22.         }

  23.         public void doFilter(ServletRequest arg0, ServletResponse arg1,
  24.                         FilterChain arg2) throws IOException, ServletException {
  25.                 // 过滤器
  26.                 HttpServletRequest request = (HttpServletRequest) arg0;
  27.                 HttpServletResponse response = (HttpServletResponse) arg1;
  28.                 // 设置整个项目的编码方式
  29.                 // 客户端的编码方式
  30.                 request.setCharacterEncoding(this.encoding);
  31.                 // 服务器的编码方式
  32.                 response.setContentType("text/html;charset=" + this.encoding);
  33.                 // 执行过滤
  34.                 arg2.doFilter(request, response);

  35.         }

  36.         public void init(FilterConfig arg0) throws ServletException {
  37.                 // 初始化
  38.                 this.config = arg0;
  39.                 // 从配置文件中获取编码方式
  40.                 this.encoding = this.config.getInitParameter("en");

  41.         }

  42. }
复制代码
配置相应的web.xml:
  1. <filter>
  2.           <filter-name>EncodingFilter</filter-name>
  3.           <filter-class>com.filter.EncodingFilter</filter-class>
  4.           <init-param>
  5.             <param-name>en</param-name>
  6.             <param-value>GBK</param-value><!--这个地方可以改成别的识别中文的字符编码-->
  7.           </init-param>
  8.         </filter>
  9.        
  10.         <filter-mapping>
  11.           <filter-name>EncodingFilter</filter-name>
  12.           <url-pattern>/*</url-pattern><!--所有访问到这个Web工程的URL请求都要先走这个过滤器  而这个过滤器本身就设置的是字符编码  这样 每一个请求  都在真正处理之前 就做了编码的设置 -->
  13.         </filter-mapping>
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 很给力!

查看全部评分

回复 使用道具 举报
<%
    request.setCharacterEncoding("utf-8");//接受参数的编码方式
    response.setCharacterEncoding("utf-8");//传送和显示的编码方式
     %>
用这个可以解决乱码方式,编码方式也可以是gbk 和gb2312都是解决中文的编码方式。!
希望能够解决你的问题!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马