//  浏览器提交的数据是000110011(码表中对应的《编码》 )等东西。

// 浏览器以什么《码表》打开浏览器(而空中浏览器使用的编码是:<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 这条语句控制的),那么就以什么《码表》提交数据。

  1.  
  2. public void doGet(HttpServletRequest request, HttpServletResponse response)
  3. throws ServletException, IOException {
  4. test1(request, response);
  5.  
  6. }
  1. //get提交时候的乱码处理
  2. private void test1(HttpServletRequest request, HttpServletResponse response)
  3. throws IOException, UnsupportedEncodingException {
  4. response.getWriter().write(request.getCharacterEncoding()+"<br/>");
  5. //得到以get类型提交的数据,由于设置request.setCharacterEncoding("UTF-8")对get类型的无效
  6. String username=request.getParameter("username");
  7. username=new String(username.getBytes("iso8859-1"),"UTF-8");
  8. response.getWriter().write(username);
  9. }

我用的是tomcat服务器,tomcat默认使用的码表ISO8889

也可以设服务器的conf下的server.xml文件(不过这个一般不推荐使用!)

    服务器下的server.xml 文件的设置:

如: <Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8" />

另外一种设置(这样就表示使用post方式中的编码):

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"  useBodyEncodingForURI="true"/>

假如使用这种形式:那么request.setCharacterEncoding("UTF-8");也对get类型提交的数据有效

也就是下面这种设置:

  

  1. //处理浏览器提交的数据《post》类型的
  2. private void test(HttpServletRequest request, HttpServletResponse response)
  3. throws UnsupportedEncodingException, IOException {
  4. //这种只能处理《post提交的数据有效,对get提交的数据没有用》
  5. request.setCharacterEncoding("UTF-8");//假如提交的时候用的是《UTF-8》的编码,那么在这里使用
  6. //UTF-8来解析 request.getParameter("username");在这里的时候就会以UTF-8来解析了
  7.  
  8. response.setCharacterEncoding("UTF-8");//由于response.getWriter()返回的字符流,所以需要设置输出的
  9. response.setHeader("Content-type", "text/html;charset=UTF-8");//这个高速浏览器以什么编码解析html文件
  10. String username=request.getParameter("username");
  11. String password=request.getParameter("userpassWord");
  12. response.getWriter().write(username);
  13. response.getWriter().write(password);
  14. }

如有错误,欢迎指点

最终版本,使用filer解决全站乱码

  1. public class CharacterEncodingFilter implements Filter {
  2. private FilterConfig config=null;
  3. private String defaultCharset="UTF-8";//缺省的编码
  4. public void init(FilterConfig filterConfig) throws ServletException {
  5. this.config=filterConfig;
  6. }
  7. public void doFilter(ServletRequest req, ServletResponse resp,
  8. FilterChain chain) throws IOException, ServletException {
  9. HttpServletRequest request=(HttpServletRequest) req;
  10. HttpServletResponse response=(HttpServletResponse) resp;
  11.  
  12. String charset=this.config.getInitParameter("charset");
  13. if(charset==null||"".equals(charset)){
  14. charset=defaultCharset;
  15. }
  16.  
  17. request.setCharacterEncoding(charset);
  18. response.setCharacterEncoding(charset);
  19. response.setContentType("text/html;charset="+charset);
  20.  
  21. CharacterEncodingRequest requestWrapper=new CharacterEncodingRequest(request);
  22. chain.doFilter(requestWrapper, response);
  23.  
  24. }
  25. public void destroy() {
  26.  
  27. }
  28.  
  29. }
  30.  
  31. class CharacterEncodingRequest extends HttpServletRequestWrapper{
  32. private HttpServletRequest requst;
  33. public CharacterEncodingRequest(HttpServletRequest request) {
  34. super(request);
  35. this.requst=request;
  36. }
  37.  
  38. @Override
  39. public String getParameter(String name) {
  40. try {
  41. String value=this.getParameter(name);
  42. if(value==null)return null;
  43. if(!this.requst.getMethod().equalsIgnoreCase("get"))return value;//忽略大小写
  44.  
  45. value=new String (value.getBytes("ISO8859-1"),this.requst.getCharacterEncoding());//这里是没有更改tomcat默认编码的时候
  46. return value;
  47. } catch (UnsupportedEncodingException e) {
  48. throw new RuntimeException(e);
  49. }
  50. }
  51. }

xml文件

  1. <filter>
  2. <filter-name>CharacterEncodingFilter</filter-name>
  3. <filter-class>cn.my.web.filter.CharacterEncodingFilter</filter-class>
  4. <init-param>
  5. <param-name>charset</param-name>
  6. <param-value>UTF-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>CharacterEncodingFilter</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

servlet乱码以及解决的更多相关文章

  1. JS.中文乱码,Jsp\Servlet端的解决办法

    JS.中文乱码,Jsp\Servlet端的解决办法 2010-03-08 15:18:21|  分类: Extjs |  标签:encodeuricomponent  乱码  urldecoder   ...

  2. servlet 乱码解决方法

    一. servlet 发送的html 页面中文乱码 解决方法, 1.加入如下代码 response.setCharacterEncoding("UTF-8"); 2.在html页面 ...

  3. Servlet乱码解决

    后端收前端 1.post乱码 可以通过 request.setCharacterEncoding("utf-8");  这样在后端可以接收中文 2.get乱码(手动解决) 可以通过 ...

  4. Servlet中文乱码原因 解决 Get 和 Post 和客户端

    一.Get方式的中文乱码 1) 使用如下页面表单内容: <form action="http://127.0.0.1:8080/day07/params" method=&q ...

  5. servlet乱码问题总结

    在学习时servlet乱码问题还是挺严重的,总结一下有三种情况 1.新建HTML页面后浏览出现乱码 2.以post形式请求时出现乱码 3.以get形式请求时出现乱码 让我们一个一个来解决吧 1.新建H ...

  6. JAVA-----乱码的处理 乱码的解决方法总结

    为什么说乱码是程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!工作遇到各种各样的乱码的解决方法总结一下. 对于Java由于默认的编码方式是 ...

  7. JSP的学习(4)——中文乱码的解决

    本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...

  8. SpringMVC中文乱码的解决办法

    中文乱码分类: (1)按照请求分类: GET请求乱码 POST请求乱码 (2)按照乱码位置分类 从前台传到后台的数据乱码(存储到数据库中的数据乱码) 从后台传到前台的数据乱码(显示在页面的数据乱码) ...

  9. Servlet乱码问题解决

    对于请求参数的编码处理基本上分为get和post两种情况. 1.POST index.html <!DOCTYPE html> <head> <meta http-equ ...

随机推荐

  1. .net简单页面后台绑定下拉框,按钮,分页 后台cs文件

    二.cs文件 using System;using System.Collections.Generic;using System.Web.UI;using System.Web.UI.WebCont ...

  2. MD5 Tool 工具类

    package com.example.secret.tools; import java.io.UnsupportedEncodingException; import java.security. ...

  3. mysql忘记密码的处理方式(整理非原创)

    方案1.通过跳过授权的方式 1.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的中加上:skip-grant-tables . 2.重新启动mysqld # ubun ...

  4. poj2378 树形DP

    C - 树形dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     64bit ...

  5. CODEVS 3138 栈练习2

    3138 栈练习2  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description (此题与栈练习1相比改了2处:1加强了数据 2不保证栈空时 ...

  6. jquery国内cdn

    推荐几个国内的jquery CDN服务地址吧: 新浪CDN,感觉很快,用的人很多,推荐使用! http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.m ...

  7. 百度ueditor 上传图片后如何设置样式

    最近项目中遇到一个问题,UEditor上传图片后,在内容展示会修改图片样式.但是表情也是img标签,所以全局修改是有问题的, 所以只能着手修改一下插件的代码. 首先找到图片上传的服务器段文件.这里主要 ...

  8. SVN - 详细文档

    1.首先打开Cornerstone 2.然后如下图所示: 3.选择对应的仓库,如下图所示 4.然后Import完成之后,就把本地的文件提交到SVN服务器上了,如下图所示,另外如果你想要使用SVN进行版 ...

  9. 几种TCP连接中出现RST的情况

    http://blog.chinaunix.net/uid-24517549-id-3991141.html http://blog.chinaunix.net/uid-24517549-id-399 ...

  10. vs 自动生成core dump文件

    一直以来觉着core dump这个东西很神奇,在初步学习的时候也没有个大方向,最近项目需要记录程序崩溃时的日志信息,因此在网上寻找相关的信息,此时core dump也成为了我重点关注的东西. 说说我的 ...