来自 http://ligure.iteye.com/blog/

中文乱码:在以后学习过程中全部采用UTF-8
1、文件的乱码

1.1、项目文本文件默认编码:

       【右击项目】->【Properties】->【Resource】->【Text file encoding】    

1.2、 JSP 文件编码:由于 JSP 要翻译为 Servlet

1.2.1、JSP文件编码:

     【右击文件】->【Properties】->【Resource】->【Text file encoding】

1.2.2、JSP翻译为Servlet时的编码:

   <%@ page language="java" pageEncoding="utf-8"%>

中文乱码:在以后学习过程中全部采用UTF-8

2、浏览器和服务器间传输数据的乱码

2.1、 浏览器端 编码,一般由服务器端告诉浏览器如何解码数据:

2.1.1、Servlet

          response.setContentType("text/html; charset=UTF-8");

        或者  response.setCharacterEncoding(“UTF-8”);

   2.1.2、JSP

         <%@ page language="java" contentType="text/html; charset=utf-8" %>

   2.1.3、通用

         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

注:浏览器编码可以由我们手工修改,但最后不要这样,一般让浏览器自动选择即可。

中文乱码:在以后学习过程中全部采用UTF-8

2、浏览器和服务器间传输数据的乱码

2.2、 服务器端 编码,将客户端传过来的数据进行解码:

      浏览器默认使用ISO-8859-1进行编码数据,然后将数据传输到服务器,因此我们默认只需要将浏览器发送过来的数据转换为我们需要的编码即可。

2.2.1、最简单方式:

  1. String username = request.getParameter(“username”);  
  2. username = new String(username.getBytes("ISO-8859-1“), "UTF-8");  

2.2.2、比较好的解决方案

      // 必须 在获取参数之前,调用如下方法先解码

       request.setCharacterEncoding(“UTF-8”);

      String username = request.getParameter(“username”);

2.4、比较通用方案:在一个Filter中更改所有请求的编码方式:

   
1、在src中添加filter来设置编码格式是中文,filter类可以在tomcat的包里面:apache-tomcat-6.0.16.zip\apache-tomcat-6.0.16\webapps\examples\WEB-INF\classes\filters下面,SetCharacterEncodingFilter.java文件

     2 、在 web.xml 中配置 filter ,具体配置如下页:

  1. <filter>  
  2.         <filter-name>Set Character Encoding</filter-name>  
  3.         <filter-class>filters.SetCharacterEncodingFilter</filter-class>  
  4.         <init-param><param-name>encoding</param-name>  
  5.         <param-value>utf-8</param-value></init-param>  
  6. </filter>  
  7. <filter-mapping>  
  8.         <filter-name>Set Character Encoding</filter-name>  
  9.         <url-pattern>/*</url-pattern>  
  10. </filter-mapping>  

2.5、 GET提交方式中文乱码解决

通过修改request.setCharacterEncoding(“UTF-8”);只能解决POST提交方式的请求编码,对GET无效。

     1 、最简单解决方案: 该解决方案不再需要任何额外配置(如filter)

           TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决,在conf\server.xml文件中设置如下

           

  1. <Connector port="8080" protocol="HTTP/1.1"  
  2.                                connectionTimeout="20000"  
  3.                                redirectPort="8443" URIEncoding=”UTF-8”/>  

     2 、在 tomcat4 之后,可以通过如下配置来解决中文乱码,但必须配置 filter

         在conf\server.xml文件中设置如下

                  

  1. <Connector port="8080" protocol="HTTP/1.1"  
  2.                                        connectionTimeout="20000"  
  3.                                        redirectPort="8443" useBodyEncodingForURI=“true”  />  

         然后request.setCharacterEncoding(“UTF-8”)也可解决GET乱码

Java WEB 乱码解决大全的更多相关文章

  1. Java Web乱码原因与解决

    Java Web乱码原因与解决 一.了解编码常识: 1.ASCII 码 众所周知,这是最简单的编码.它总共可以表示128个字符,0~31是控制字符如换行.回车.删 除等,32~126是打印字符,可以通 ...

  2. Java Web中解决乱码的方式

    Java Web中解决乱码的方式 方式一:添加编码过滤器 package com.itmacy.dev.filter; import javax.servlet.*; import javax.ser ...

  3. java中文乱码解决之道(九)-----总结

    乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...

  4. java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**

    在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...

  5. java中文乱码解决之道(七)-----JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  6. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)—–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

  7. java中文乱码解决之道(七)—–JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  8. java 项目乱码解决(web.xml全局配置编码格式)

    <!-- 乱码解决 --> <filter> <filter-name>encodingFilter</filter-name> //过滤器名称 < ...

  9. java中文乱码解决之道(一)-----认识字符集

    沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...

随机推荐

  1. Java 将两个Map对象合并为一个Map对象

    实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式. publi ...

  2. 2018年计划小目标(9月)PMP

    从6.23结束敏捷的系统贯穿学习考试,6.24开始做传统项目管理,系统学习计划,打包报考,(╥╯^╰╥):ACP+实战+PMP+软考,历时两个月 每天上下班路上3个小时,听录音,(报的远程班,倍速听了 ...

  3. Vue(三)之前端路由

    01-前端路由 1.前端路由的实现原理 vue+vue-router 主要来做单页面应用(Single Page Application) 为什么我们要做单页面应用? (1)传统的开发方式 url改变 ...

  4. Web测试和App测试有什么区别

    WEB测试和App测试从流程上来说,没有区别.都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动.从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试.性 ...

  5. Largest Rectangle in a Histogram HDU - 1506 (单调栈)

    A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec ...

  6. CentOS 7.2 yum安装LAMP环境

    https://www.linuxidc.com/Linux/2016-11/136766.htm 详见以上链接,用yum安装方便省事. 尤其注意,mysql数据要设置远程连接.

  7. ElasticSearch 入门

    http://www.oschina.net/translate/elasticsearch-getting-started?cmp ElasticSearch 简单入门 返回原文英文原文:Getti ...

  8. 异常:fatal: unable to access 'https://git.oschina.net/pcmpcs/library.git/': Could not resolve host

    git  fork项目时出现的异常. 原因: 我以前用的是ssh地址做的远程通信地址,而这次是用的是https,因为很久没用,所以忘记了以前是用ssh的了.解决方案一:复制ssh协议的地址,然后再关联 ...

  9. bootstrap简单使用

    Bootstrap (版本 v3.3.7)     官网教程: https://v3.bootcss.com/css/ row——行 row——列 push——推   pull——拉 col-md-o ...

  10. Velocity ${} 和$!{}、!${}区别

    前言 在使用Velocity时经常会看到三种使用变量的情况 情况一:${name} 情况二:$!{name} 情况三:!${name} 那么三者之间到底有什么区别呢?莫慌!!!哈哈 情况一:${nam ...