JSP/Servlet中的编码相关设置
在JSP和Servlet中有几个地方都可以设置编码,各个编码的功能也不一样,本文将对各个编码做一个小结。
各种编码一览
A. JSP/Servlet都有的编码设置
1. request.setCharacterEncoding("UTF-8")
2. response.setCharacterEncoding("UTF-8")
3. response.setContentType("text/html;
charset=UTF-8");
4. response.setHeader("Content-Type", "text/html; charset=UTF-8");
B. JSP专有的编码设置
1. <%@ pageEncoding="UTF-8" %>
2. <%@ contentType="text/html; charset=UTF-8" %>
C. HTML页面中的编码设置
1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
※以下内容用到本部分编码设置时,将使用A1, A3, B2的方式。
浏览器如何确定编码格式来显示页面
web服务器在接收到浏览器的请求信息后,经过处理,会发送一个应答消息给浏览器。应答消息包含一般三个部分:状态行,应答首部,应答主体。下面是一个示例:
HTTP/1.0 200 OK
Last-Modified: Mon: 20 Dec 2001 23:26:42 GET
Date: Tue 11 Jan 2002 20:52:40 GMT
Status: 200
Content-Type: text/html; charset=UTF-8
Servlet-Engine: Tomcat Web Server/4.0.1
Content-Length: 59
<html>
<body>
<h1>Hello World!</h1>
</body>
</html>
其中,第一行是状态行,最后的一部分是应答主体,而中间的部分就是应答首部了。而应答主体部分的Content-Type中的charset就指定了浏览器应该采用什么编码格式来显示页面。如果没有指定charset的话,浏览器会根据C1(meta中的charset)来显示页面;如果C1也没有的话,就采用本地默认的编码格式显示页面(应该与客户端的操作系统有关)
★浏览器显示页面所用的格式可以通过菜单 -> 查看 -> 编码来查看具体是哪种编码格式
web服务器如何决定编码
从上面可以知道,服务器在发送给客户端的应答主体中一般会包含charset。而这个charset的值有几个来源,我们从高优先级到低优先级排列。
注:下面的结论是采用Tomcat 5.5确认的结论,不一定全部适用于其他服务器。
1. A2, A3, A4
如果你的JSP或者Servlet中包含以上3中类型的代码,那么charset就是它们。如果有多条语句设置,那么charset就是最后一条所设置的值。
2. B2
B2的代码在编译成class
相关文档:
经常看到许多人问如何配置JDK和JSP,现在我把方法总结下,希望对大家有所帮助。
第一步:下载jdk和tomcat
第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环 ......
package com.demo.filter;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
public class SetCharacterEn ......
Tomcat将jsp编译成servlet后的文件存放在\work\Catalina目录下,例如jsp文件\webapps\hh\h.jsp,编译后
\work\Catalina\localhost\hh\org\apache\jsp\h_jsp.java
servlet文件和.class文件都在同一目录下。
控制台报的异常行数是指编译过后的servlet文件,而不是你原来的jsp文件! ......
在开发过程出现这么一个问题:
比如:一个字段content 类型CLOB,这其中存的有可能复制粘贴过来的word excel html中的内容,用java将这些内容存入,存入后有特殊的符号 比如回车换行等。那么不能正常展示的数据。
解决方案:
存入数据的是将这个数据contentdata在js中进行
......