首页 > 代码库 > JSP编码问题

JSP编码问题

JSP的开头内容:

1 <%@ page language="java" contentType="text/html; charset=UTF-8"2     pageEncoding="UTF-8"%>

JSP引擎将JSP源文件翻译成Servlet源文件默认采用UTF-8编码。JSP开发人员可以采用各种字符集编码来编写JSP源文件,但是必须通过某种方式告知JSP引擎,他所采用的字符集编码,否则JSP引擎把它当作默认的ISO8859-1。这种方式就是设置pageEncoding属性。

page指令的contentType属性除了具有指定响应正文的字符集编码的作用外,它还具有说明JSP源文件的字符集编码的作用。但JSP规范建议使用pageEncoding属性或在部署描述符中说明JSP源文件的字符集编码。

page指令只是通知JSP引擎它的字符集编码,但是真正的编码方式需要在Eclipse中设置Window->Perferences

 

只有JSP真实的字符集编码与pageEncoding指定的字符集编码一致时,JSP引擎才能正常的把它翻译成Servlet文件。

contentType用于设置响应正文的MIME类型,默认MIME类型为text/html,默认字符集为ISO-8895-1.

实例一:

 1 <%@ page language="java" contentType="text/html; charset=GBK" 2     pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <%@taglib prefix="s" uri="/struts-tags" %> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <title>Insert title here</title> 9 </head>10 <body>11 <p>你好</p>12 13 <%14     out.println("hello 中国.");15 %>16 </body>17 </html>

在浏览器中显示:

由于contentType="text/html; charset=GBK"所以浏览器自动选择简体中文编码显示,中文能正确显示,不会出现乱码。如果选择其他的编码方式则中文则会显示为乱码。

比如:

 

实例二:如果设置contentType="text/html; charset=UTF-8"

浏览器自动选择Unicode编码,正常显示,如果换成其他的编码方式则会出现乱码。

 

JSP编码问题