1 JSP代码如下:
2 <%@ page language="java" contentType="text/html; charset=UTF-8"
3 pageEncoding="UTF-8"%>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
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 </html>
在这里面跟编码类型有关的地方有3处:
1、jsp的page指令中contentType属性(与pageEncoding是一样的,如果MIME类型不是text/html,需用该属性设置MIME类型及编码),这个编码指定了输出html页面的编码。也就是由Servlet输出返回给浏览器的显示页面
2、jsp的page指令中pageEncoding属性(用户在浏览器中右击查看编码所看到的编码格式,默认MIME类型是text/html)
在生成的.java文件中为response.setContentType("text/html;charset=UTF-8");
这个编码指定了JSP页面的编码类型,也就是保存成.jsp的字符文件的编码类型,这个文件保存后会经过容器转换,先转换为.java也就是对应的java源文件(继承相应的servlet)这个过程就是按照pageEncoding指定的编码来读取的。转换成的.java文件以及后边编译后的.class文件的编码都是规定的UTF-8编码。
注意,如果这里的编码格式不指定,就可能不被正确转换为.java文件,这里jsp有区别于java文件,jsp文件到java文件没有默认编码转换方式,没有指定就没法正确解析,而java文件到class文件的转换有默认的编码格式,即本地编码格式,也就是说javac编译工具默认会根据电脑系统的编码格式进行解析java文件,这也是为什么记事本等系统自带编辑器写的代码能被正确编译的原因。
3、html中的<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
这里的编码charset=UTF-8就是告诉浏览器,我返回给你的HTML页面编码格式是什么,这样浏览器就可以按照正确的编码格式来解析HTML页面了。
总结:
1中的编码类型一定要和3中的一致,而2中的类型无所谓,可根据自己页面中包含的字符类型选择合适的编码格式。
另外,在java源码中也可以设置编码格式,可以做转码操作。