<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<b>hello world , 你好,世界!</b>
</body>
</html>

如上面这段简单的JSP代码,里面有三个地方对编码进行了设置:

1. contentType 中的 charset

2. pageEncoding

3. html meta标记中的charset

那么这三个都在什么地方起到什么作用,

在说编码之前首先简单叙述一下JSP页面执行的原理,当一个JSP页面编写完成后需要将该页面发布到相应的服务器例如tomcat上,整个发布过程由包括两个小的步骤,一、将JSP翻译成Servlet(一个Java文件)。二、JSP引擎(tomcat)调用Java编译器将Servlet编译成.class文件并保存到规定的目录中。三、当用户在地址栏输入相应JSP页面的地址时,JSP引擎调用Java虚拟机来解释执行.class文件,并生成向客户端的回应信息。

下面进入正题,编码

首先讲pageEncoding,我们知道每一个文档或者页面都有相应的编码,如果不提供编码格式,程序是无法将一连串的二进制翻译出来的。JSP也一样,那么这个pageEncodinig就是指定这个JSP文件中内容的编码格式,这个编码格式告诉JSP引擎,我这个JSP是用什么编码的,你可以使用什么解码格式来读取我这个文档,并翻译成相应的Servlet。这个Servlet的格式是JSP引擎的规定的utf-8。同样Servlet编译成的.class文件也是JSP引擎规定的utf-8格式。至此pageEncoding的使命完成。如果想看看这个pageEncoding是否设置正确可以查看JSP相应的Servlet中代码是否有乱码,如果有表示pageEncoding没有设置正确。常用的编码有iso-8859-1(英文字符)、utf-8(全世界通用)、gb2312(国标,中文编码,同样支持英文)、gbk(gb2312的增强版,支持的字符更多,与gb2312相对于utf-8占用空间较大)。

在JSP页面指令中的charset是当客户端请求JSP页面时,.class文件返回页面的编码格式,假如页面中含有中文,而且pageEncoding设置正确,那么在Servlet中文会正常显示,但是如果charset设置的是英文编码例如iso-8859-1,Servlet中的中文输入到客户端浏览器就会出现乱码。

最后一个是html meta标签中的,这个标签功能与JSP页面指令charset是相同的,该标签在JSP页面中不起作用,至少我测试的是不起作用的,如果有相应页面指令则按照页面指令编码,如果没有默认utf-8,该标签不起作用,但是在普通的html中是起作用的。

我知道的就这么多了

今天一个同学问我为什么他的项目总是出现乱码,但是我把项目在我的电脑上运行就没有问题,在他的电脑上,任我怎样设置pageEncoding ,charset 都无济于事,最后只能使用new String()进行转码。回来后仔细看了一下,原来原因出现在tomcat配置上,据说是因为新版tomcat的问题,这个没有测试过,新版的tomcat(5.x以上)中使用get传递参数如果不配置server.xml文件就只能使用new String()进行转码了。配置方法

1.

这种方法配置以后应该不需配置request编码就可以正常获取中文。

2. 

这种方法设置以后需要在网页中设置request的编码格式。

JSP页面编码问题的更多相关文章

  1. MyEclipse中新建JSP页面编码设置(UTF-8)

    今天再次遭遇反人类的Eclipse,新建JSP页面编码竟然是不是UTF8,导致各种乱码.做下面的修改就能避免这个问题了.

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

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

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

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

  4. web页面乱码,JSP页面编码设置

    解决Web页面访问出现乱码bug,JSP页面首行添加: <%@ page language="java" contentType="text/html; chars ...

  5. Eclipse Java EE IDE中jsp页面编码修改

    Eclipse Java EE IDE模板编码是ISO8859,肯定不是我们需要的,修改方法如下图: 依次点击:Window---->Preference---->Web---->J ...

  6. Eclipse中JSP页面默认编码修改

    jsp页面默认编码为ISO-8859-1 要修改为UTF-8,步骤如下 选择windon-->preference 在弹出框操作 以后新建jsp页面编码为UTF-8编码

  7. JSP页面的编码设置(转载)

    1. pageEncoding:<%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...

  8. JSP文件编码

    1. pageEncoding: <%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...

  9. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

随机推荐

  1. 从客户端(CourseIssueContent="<P>财务审计师岗位认证招生简章<BR>...")中检测到有潜在危险的 Request.Form 值。

    说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击.通过在 Page 指令或 配置节中设置 validateRequest ...

  2. hdu3496 二维01背包

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3496 //刚看题目以为是简单的二维01背包,but,,有WA点.. 思路:题中说,只能买M ...

  3. css整理-01选择器和继承

    元素 元素形式: 替换,非替换 元素类型: 块级,行内 列表是特殊的块级元素,它会生成一个标记符 样式表 候选样式表: rel='alternative' @import导入样式表,必须在style的 ...

  4. API

    20145217 <Java程序设计>第八周学习总结 教材学习内容总结 本章主要讲输入与输出. 15.1日志API 1.java.util.logging包提供了日志功能相关类与接口,使用 ...

  5. 全排列 UVA 11525 Permutation

    题目传送门 题意:训练指南P248 分析:逆向考虑,比如一个全排列:7345261,它也可以表示成题目中的形式,第一个数字7是由6 * (7 - 1)得到的,第二个数字3有2 * (7 - 2)得到, ...

  6. CF# 334 Alternative Thinking

    A. Alternative Thinking time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  7. 解决HttpServletResponse输出的中文乱码问题

    http://blog.csdn.net/simon_1/article/details/9092747 首先,response返回有两种,一种是字节流outputstream,一种是字符流print ...

  8. A Simple C++ Template Class that Matches a String to a Wildcard Pattern

    A recently implemented enhanced wildcard string matcher, features of which including, Supporting wil ...

  9. Android Drawable

    1. Shape 属性: (1) solid ( 填充 ) 参数:android:color ( 填充的颜色 ) (2) gradient ( 渐变 ) 参数:android:startColor ( ...

  10. C语言break和continue

    break和continue C语言中有有两种结束循环的关键字:break和continue #include <stdio.h> #include <stdlib.h> in ...