使用Tomcat进行JSP开发最头疼的莫过于中文乱码问题了,总结Tomcat乱码问题出现的原因必须明白以下几点:

1.Tomcat一般总是默认使用ISO-8859-1作为字符编码方式的。所以,除非你在Servlet中使用了 request.setCharacterEncoding("编码方式");指定了特殊的编码方式,否则Tomcat默认使用ISO-8859-1的编 码方式。

2.在JSP页面中pageEncoding和charset和含义是不同的。pageEncoding是指页面的编码格式(请记住!,十分重要~,与显 示无关),也就是说无论你JSP里的pageEncoding采用什么方式,如果出现中文乱码,原因不在于pageEncoding的所指定的编码方式不 对,而在于charset的属性不对。charset是负责JSP页面中的字符按什么编码方式显示。pageEncoding只负责页面的编码格式,而后 JAVA虚拟机负责按照pageEncoding指定的编码转换成Unicode编码的字节码文件。(也就是说,无论你pageEncoding指定什么 方式,最终都是转换成了Unicode编码。)另外请大家注意,如果从客户端提交的用户请求里的中文也是使用pageEncoding方式编码的。也就是 说,在Servlet中request.getParameter("参数");Tomcat默认是使用ISO-8859-1方式去读取的,但实际里面的 字符编码方式应该是JSP页面pageEncoding所指定的方式。除非用户自己加上request.setCharacterEncoding("编 码方式");

3.明白pageEncoding和charset之间的关系。一般而言,如果页面里指定了pageEncoding的方式也就是说,比如:<%@ page language="java" import="java.util.*" pageEncoding="GBK" %>这句话,而没有指定charset的话,那么页面默认是按照charset=ISO-8859-1编码方式显示字符,按照 pageEncoding="GBK"方式进行页面的编码。如果你的JSP页面里面没有指定pageEncoding方式,而只是说明了charset的 话,比如:

<%@ page contentType="text/html;charset=utf-8"%> 这句话,那么JSP默认是按照pageEncoding="utf-8"进行页面编码的,字符集按照charset=utf-8"显示。

4.使用request.setCharacterEncoding("编码方式");注 意:request.setCharacterEncoding()仅仅对POST提交方式起作用,对于GET方式提交还是会出现乱码问题。要解决GET 提交中文的乱码问题,可以在Server.xml 的<Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

加入:URIEncoding="utf-8" useBodyEncodingForURI="true"

另外,request.setCharacterEncoding()这句话一定要放在要读取的第一参数之前调用。否则也不起作用了!!

5、也可以创建一个filter来对编码进行转换,但filter也只对post提交方式起作用,对get无能为力。URIEncoding对post不起作用。

来源:http://hpi-ls.blog.163.com/blog/static/20214748201022295532305/

tomocat解决乱码问题的更多相关文章

  1. SpringMVC解决乱码

    SpringMVC解决乱码 在web.xml中配置如下代码

  2. http get/post解决乱码问题

    <form method="默认为get"-> <s:form mothod="默认为post"-> ================= ...

  3. 上传Text文档并转换为PDF(解决乱码)

    前些日子,Insus.NET有分享一篇<上传Text文档并转换为PDF>http://www.cnblogs.com/insus/p/4313092.html 它是按最简单与默认方式来处理 ...

  4. mysql 使用set names 解决乱码问题的原理

    解决乱码的方法,我们经常使用“set names utf8”,那么为什么加上这句代码就可以解决了呢?下面跟着我一起来深入set names utf8的内部执行原理 先说MySQL的字符集问题.Wind ...

  5. php 解决乱码的通用方法

    一,出现乱码的原因分析 1,保存文件时候,文件有自己的文件编码,就是汉字,或者其他国语言,以什么编码来存储 2,输出的时候,要给内容指定编码,如以网页的形势输入时<meta http-equiv ...

  6. 为sublime安装package control 解决乱码问题 Mac版

    为sublime安装package control   Mac版参考 https://sublime.wbond.net/installation 防止中文乱码其实只需要2个东东  一个GBK enc ...

  7. Python字符串的encode与decode研究心得——解决乱码问题

    转~Python字符串的encode与decode研究心得——解决乱码问题 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“/xe4/xb8/xad/xe6/x96/x8 ...

  8. window安装mysql5.7解压版(解决乱码问题)

    ♣安装mysql两种方法 ♣下载mysql5.7解压版 ♣配置步骤 ♣解决服务无法启动 ♣解决乱码 1.安装mysql两种方法 MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果 ...

  9. 编译VisualVM源码解决乱码问题

    编译VisualVM源码解决乱码问题 起因 今天在使用VisualVM对测试服务器进行JVM监控的时候,发现所有统计图的横纵坐标都是显示乱码(小方块),即使我的Ubuntu系统使用的是英文语言环境.奇 ...

随机推荐

  1. Jconsole

    Jconsole 1.1 简介以及连接 JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,它是Java自带的简单性能监控工具.下面以对tomcat的监控为例,带领大家熟悉Jcon ...

  2. tomcat通过虚拟路径访问外部静态资源

    转载:http://blog.csdn.net/yuancenyi/article/details/53414397 在项目开发中,单个工程中,为了以后软件版本升级的方便,经常将网站运行中某些上传的静 ...

  3. 创建CSS3警示框渐变动画

    来源:GBin1.com 在线演示   在线下载 现代的网页设计技术已经允许开发人员在大多数浏览器中快速实现所支持的动画,其中消息警示是非常普遍的.由于默认的JavaScript警示框往往设计不佳和过 ...

  4. Qracle、Sql server 、mysql查询练习题

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...

  5. 并发编程系列小结(线程安全,synchronized,脏读,线程间的通信wait/notify,线程的三种实现方式Demo,可替代wait/notify的方法)

    线程安全: 当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法就是线程安全的) synchronized: 可以在任意对象或方法上加锁,而加锁的这段代码称为 ...

  6. Web.xml 错误或异常页面配置

         <error-page>          <error-code>404</error-code>          <location>/ ...

  7. bootstrap学习笔记 Bootstrap 列表组

    本文将介绍列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素ul 添加class list-group 向li添加class list-group-ite ...

  8. 本体论与OWL

    http://semanticweb.org/wiki/Main_Page.html http://owl.man.ac.uk/documentation.shtml  https://zh.wiki ...

  9. centos 安装cmake 3.3.2

    先卸掉本身自带的 cmake 2.8 yum remove cmake cmake版本:3.3.2 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-deve ...

  10. 查询MySql数据库架构信息:数据库,表,表字段

    /*1.查询所有数据库*/ show databases;  /*2.查询所有数据表*/ select * from information_schema.tables where table_sch ...