1、JSP页面中开头处pageEncoding的设置:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2、最好在<head></head>中加上这句:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
3、注意JSP文件本身的编码问题,可使用工具对文件进行格式转化成想要的格式,工具推荐:UltraEdit、EditPlus
文件 --> 另存为... --> 选择编码格式为UTF-8
4、使用Servlet的doPost()方法接收表单的post方法传过来的数据时,可通过以下设置:
request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
5、使用Servlet的doGet()方法接收表单的get方法传过来的数据时,可通过以下设置:
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
6、如果form表单中没有写明method或method方法为get时,提交到后台也会出现乱码。所以注意写上或改成post就可以了。
7、使用js向Java后台提交中文时一定要注意编码:
前台js代码:
var url="....action?name='中文'"; encodeURI(encodeURI(url));
后台Java代码解码:
name=URLDecoder.decode(request.getParameter("name"),"UTF-8");
8、Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive(utf-8)
原因:这是个很诡异的问题,不清楚真正的原因,貌似utf-8和UTF-8还有区别。
解决方法:将utf-8改成UTF-8或UTF-8改成utf-8,视情况而定。