1.tomcat编码设置(在引用的server中的server.xml文件中):
<Connector connectionTimeout="20000" URIEncoding="UTF-8" port="8080"
protocol="HTTP/1.1" redirectPort="8443"/>
2、JSP与页面参数之间的乱码
JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法 是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或 request.setCharacterEncoding("gb2312")。
如果在JSP将变量输出到页面时出现了乱码,可以通过设置 response.setContentType("text/html;charset=GBK")或 response.setContentType("text/html;charset=gb2312")解决。
如果不想在每个文件里都写这样两句话,更简洁的办法是使用Servlet规范中的过虑器指定编码,过滤器的在web.xml中的典型配置
3、Java与文件/流之间的乱码
Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader /FileWriter。其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建 议使用基于字符的FileReader和FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容 与系统编码方式不一致,可能会出现乱码。在这种情况下,建议使用FileReader和FileWriter的父 类:InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类 型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。
4.时间绑定:
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder)
throws Exception{
SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class,"startTime",new CustomDateEditor(format,true));
binder.registerCustomEditor(Date.class,"endTime",new CustomDateEditor(format,true));
}