我知道的解决办法
<1>.适用于任何提交方式的乱码:
new String(s.getBytes("不识别中文的字符编码"), "识别中文的字符编码"); 这就是你提到的方法
但是 这种方式只能进行局部解决问题 那个字符串可能出现乱码的时候 就这么重构一下即可 不是一种全局的方式
<2>.如果是post请求出现乱码:response.setCharacterEncoding("识别中文的字符编码");
<3>.如果是get请求出现的乱码:如果你的服务器是Tomcat的话 可以找到server.xml标签 修改里面的Connector标签 将其URIEncoding设置为UTF-8
<4>.还有一种比较麻烦的方式 就是在web.xml中配置过滤器来处理字符编码
举例子:- package com.filter;
- 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.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * 对页面和所有的Servlet进行页面的中文转码
- *
- */
- public class EncodingFilter implements Filter {
- private String encoding = null;
- private FilterConfig config = null;
- public void destroy() {
- // 销毁
- this.config = null;
- this.encoding = null;
- }
- public void doFilter(ServletRequest arg0, ServletResponse arg1,
- FilterChain arg2) throws IOException, ServletException {
- // 过滤器
- HttpServletRequest request = (HttpServletRequest) arg0;
- HttpServletResponse response = (HttpServletResponse) arg1;
- // 设置整个项目的编码方式
- // 客户端的编码方式
- request.setCharacterEncoding(this.encoding);
- // 服务器的编码方式
- response.setContentType("text/html;charset=" + this.encoding);
- // 执行过滤
- arg2.doFilter(request, response);
- }
- public void init(FilterConfig arg0) throws ServletException {
- // 初始化
- this.config = arg0;
- // 从配置文件中获取编码方式
- this.encoding = this.config.getInitParameter("en");
- }
- }
复制代码 配置相应的web.xml:- <filter>
- <filter-name>EncodingFilter</filter-name>
- <filter-class>com.filter.EncodingFilter</filter-class>
- <init-param>
- <param-name>en</param-name>
- <param-value>GBK</param-value><!--这个地方可以改成别的识别中文的字符编码-->
- </init-param>
- </filter>
-
- <filter-mapping>
- <filter-name>EncodingFilter</filter-name>
- <url-pattern>/*</url-pattern><!--所有访问到这个Web工程的URL请求都要先走这个过滤器 而这个过滤器本身就设置的是字符编码 这样 每一个请求 都在真正处理之前 就做了编码的设置 -->
- </filter-mapping>
复制代码 |