一、前台展示乱码、后台获取乱码
1、pageEncoding是设置的JSP页面源代码的字符编码格式;
2、charset是请求服务器以后返回过来的内容的字符编码(当浏览器得到此文件时以什么方式解码);
3、request.setCharacterEncoding是设置从request中取得的值或从数据库中取出的值;
4、response.setContentType指定返回给客户端的编码,同时指定了浏览器显示的编码;
response.setHeader("content-type","text/html;charset=utf-8");
== response.setContentType("text/hmtl;charset=utf-8");
5、response.setCharacterEncoding() 设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用response.setCharacterEncoding指定的编码格式覆盖之前的设置.
二、文件上传下载乱码
下载文件时,服务器端需对中文文件名进行编码,在浏览器下载时基本不会出现乱码情况;
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
上传文件时,提交中文文件名时需对文件名进行编码:encodeURI、encodeURIComponent。
encodeURI 不会对特殊字符进行编码(! @ # $& * ( ) = : / ; ? + '),可应用于整个url;
encodeURIComponent将对包括“/“在内的特殊字符进行编码,应用于url的各个Component;