servlet乱码以及解决
// 浏览器提交的数据是000110011(码表中对应的《编码》 )等东西。
// 浏览器以什么《码表》打开浏览器(而空中浏览器使用的编码是:<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 这条语句控制的),那么就以什么《码表》提交数据。
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- test1(request, response);
- }
- //get提交时候的乱码处理
- private void test1(HttpServletRequest request, HttpServletResponse response)
- throws IOException, UnsupportedEncodingException {
- response.getWriter().write(request.getCharacterEncoding()+"<br/>");
- //得到以get类型提交的数据,由于设置request.setCharacterEncoding("UTF-8")对get类型的无效
- String username=request.getParameter("username");
- username=new String(username.getBytes("iso8859-1"),"UTF-8");
- response.getWriter().write(username);
- }
我用的是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类型提交的数据有效
也就是下面这种设置:
- //处理浏览器提交的数据《post》类型的
- private void test(HttpServletRequest request, HttpServletResponse response)
- throws UnsupportedEncodingException, IOException {
- //这种只能处理《post提交的数据有效,对get提交的数据没有用》
- request.setCharacterEncoding("UTF-8");//假如提交的时候用的是《UTF-8》的编码,那么在这里使用
- //UTF-8来解析 request.getParameter("username");在这里的时候就会以UTF-8来解析了
- response.setCharacterEncoding("UTF-8");//由于response.getWriter()返回的字符流,所以需要设置输出的
- response.setHeader("Content-type", "text/html;charset=UTF-8");//这个高速浏览器以什么编码解析html文件
- String username=request.getParameter("username");
- String password=request.getParameter("userpassWord");
- response.getWriter().write(username);
- response.getWriter().write(password);
- }
如有错误,欢迎指点
最终版本,使用filer解决全站乱码
- public class CharacterEncodingFilter implements Filter {
- private FilterConfig config=null;
- private String defaultCharset="UTF-8";//缺省的编码
- public void init(FilterConfig filterConfig) throws ServletException {
- this.config=filterConfig;
- }
- public void doFilter(ServletRequest req, ServletResponse resp,
- FilterChain chain) throws IOException, ServletException {
- HttpServletRequest request=(HttpServletRequest) req;
- HttpServletResponse response=(HttpServletResponse) resp;
- String charset=this.config.getInitParameter("charset");
- if(charset==null||"".equals(charset)){
- charset=defaultCharset;
- }
- request.setCharacterEncoding(charset);
- response.setCharacterEncoding(charset);
- response.setContentType("text/html;charset="+charset);
- CharacterEncodingRequest requestWrapper=new CharacterEncodingRequest(request);
- chain.doFilter(requestWrapper, response);
- }
- public void destroy() {
- }
- }
- class CharacterEncodingRequest extends HttpServletRequestWrapper{
- private HttpServletRequest requst;
- public CharacterEncodingRequest(HttpServletRequest request) {
- super(request);
- this.requst=request;
- }
- @Override
- public String getParameter(String name) {
- try {
- String value=this.getParameter(name);
- if(value==null)return null;
- if(!this.requst.getMethod().equalsIgnoreCase("get"))return value;//忽略大小写
- value=new String (value.getBytes("ISO8859-1"),this.requst.getCharacterEncoding());//这里是没有更改tomcat默认编码的时候
- return value;
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
- }
xml文件
- <filter>
- <filter-name>CharacterEncodingFilter</filter-name>
- <filter-class>cn.my.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>charset</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>CharacterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
servlet乱码以及解决的更多相关文章
- JS.中文乱码,Jsp\Servlet端的解决办法
JS.中文乱码,Jsp\Servlet端的解决办法 2010-03-08 15:18:21| 分类: Extjs | 标签:encodeuricomponent 乱码 urldecoder ...
- servlet 乱码解决方法
一. servlet 发送的html 页面中文乱码 解决方法, 1.加入如下代码 response.setCharacterEncoding("UTF-8"); 2.在html页面 ...
- Servlet乱码解决
后端收前端 1.post乱码 可以通过 request.setCharacterEncoding("utf-8"); 这样在后端可以接收中文 2.get乱码(手动解决) 可以通过 ...
- Servlet中文乱码原因 解决 Get 和 Post 和客户端
一.Get方式的中文乱码 1) 使用如下页面表单内容: <form action="http://127.0.0.1:8080/day07/params" method=&q ...
- servlet乱码问题总结
在学习时servlet乱码问题还是挺严重的,总结一下有三种情况 1.新建HTML页面后浏览出现乱码 2.以post形式请求时出现乱码 3.以get形式请求时出现乱码 让我们一个一个来解决吧 1.新建H ...
- JAVA-----乱码的处理 乱码的解决方法总结
为什么说乱码是程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!工作遇到各种各样的乱码的解决方法总结一下. 对于Java由于默认的编码方式是 ...
- JSP的学习(4)——中文乱码的解决
本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...
- SpringMVC中文乱码的解决办法
中文乱码分类: (1)按照请求分类: GET请求乱码 POST请求乱码 (2)按照乱码位置分类 从前台传到后台的数据乱码(存储到数据库中的数据乱码) 从后台传到前台的数据乱码(显示在页面的数据乱码) ...
- Servlet乱码问题解决
对于请求参数的编码处理基本上分为get和post两种情况. 1.POST index.html <!DOCTYPE html> <head> <meta http-equ ...
随机推荐
- .net简单页面后台绑定下拉框,按钮,分页 后台cs文件
二.cs文件 using System;using System.Collections.Generic;using System.Web.UI;using System.Web.UI.WebCont ...
- MD5 Tool 工具类
package com.example.secret.tools; import java.io.UnsupportedEncodingException; import java.security. ...
- mysql忘记密码的处理方式(整理非原创)
方案1.通过跳过授权的方式 1.修改MySQL的登录设置: # vi /etc/my.cnf 在[mysqld]的中加上:skip-grant-tables . 2.重新启动mysqld # ubun ...
- poj2378 树形DP
C - 树形dp Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:65536KB 64bit ...
- CODEVS 3138 栈练习2
3138 栈练习2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description (此题与栈练习1相比改了2处:1加强了数据 2不保证栈空时 ...
- jquery国内cdn
推荐几个国内的jquery CDN服务地址吧: 新浪CDN,感觉很快,用的人很多,推荐使用! http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.m ...
- 百度ueditor 上传图片后如何设置样式
最近项目中遇到一个问题,UEditor上传图片后,在内容展示会修改图片样式.但是表情也是img标签,所以全局修改是有问题的, 所以只能着手修改一下插件的代码. 首先找到图片上传的服务器段文件.这里主要 ...
- SVN - 详细文档
1.首先打开Cornerstone 2.然后如下图所示: 3.选择对应的仓库,如下图所示 4.然后Import完成之后,就把本地的文件提交到SVN服务器上了,如下图所示,另外如果你想要使用SVN进行版 ...
- 几种TCP连接中出现RST的情况
http://blog.chinaunix.net/uid-24517549-id-3991141.html http://blog.chinaunix.net/uid-24517549-id-399 ...
- vs 自动生成core dump文件
一直以来觉着core dump这个东西很神奇,在初步学习的时候也没有个大方向,最近项目需要记录程序崩溃时的日志信息,因此在网上寻找相关的信息,此时core dump也成为了我重点关注的东西. 说说我的 ...