编码问题
1、 pageEncoding="utf-8"
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
pageEncoding="utf-8":指的是jsp文件的编码方式;
普通的话:
pageEncoding="utf-8"这句话只是简单的文本,改变它并不会改变文件的编码方式
如:右下角显示文件的编码仍然是utf-8
见图:
MyEclipse(可能是MyEclipse)对这个东西进行了解析,当我们修改这句话的时候
如: pageEncoding="utf-8" ----------》 pageEncoding="gbk"
时,文件的编码方式会变成gbk且不会乱码。
见图:
修改前:
修改后:
2、JSP/servlet中的几种编码的作用
JSP 中 pageEncoding charset 的区别
首先,说说JSP/Servlet中的几个编码的作用。
在JSP/Servlet中主要有以下几个地方可以设置编 码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF-8")和 response.setCharacterEncoding("UTF-8"),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet 中。
1、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。
众所周知,JSP在服务 器上是要先被编译成Servlet的。pageEncoding="UTF-8"的作用就是告诉JSP编译器在将JSP文件编译成Servlet时使用的 编码。通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的 JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding="UTF-8",就会引起JSP内部定义的字符串为乱码。
另外,该参数还有一个功能,就是在JSP中不指定contentType参数,也不使用response.setCharacterEncoding方法时,指定对服务器响应进行重新编码的编码。
2、contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。
在不使用response.setCharacterEncoding方法时,用该参数指定对服务器响应进行重新编码的编码。
3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。
该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。
4、response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。
服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。
3、浏览器发送数据和接收数据的编码方案
JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
http://www.360doc.com/content/17/0913/11/33260087_686723511.shtml
4、老师的编码解决方案
post方式提交的数据,采用:
request.setCharacterEncoding(“utf-8”);
• get方式提交的数据
– 在server.xml中元素<Connector>中增加属性:
useBodyEncodingForURI=“true” ,则 上面对get方式提交的
数据也有效。
• 通用方法
– new String(str.getBytes(“iso8859-1”),” utf-8”);