一般情况下,在一个jsp文件中会有以下三个地方会出现字符集和编码。那它们的作用都是什么呢?下面就来一一作个简单介绍。示例代码如下:
page_01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" <%-- -----------③--------- --%>
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=UTF-8"><%-- ---------①-------- --%>
<title>Insert title here</title>
</head>
<body>
......
</body>
</html>
①处的charset决定了该jsp文件在文件系统(硬盘)上的编码。此处的“charset=UTF-8“及表示page_01.jsp这个文件要以UTF-8来编码;如果"charset=GBK"就表示page_01.jsp这个文件要以GBK来编码。这一点可以用Emeditor打开该文件,然后在右下角显示的编码来证实。
②处的pageEncoding="UTF-8"表示该文件内的字符都会以UTF-8来编码。
③处的contentType="text/html; charset=UTF-8"在jsp文件被编译成.java文件后,会被翻译成response.setContentType("text/html; charset=UTF-8")。当向浏览器输出内容时,会以UTF-8来编码,并且告诉浏览器这个页面要以UTF-8来解码。
以上三处的编码一定要统一,否则一定会出现乱码。