一,获取系统平台的默认编码
获取系统平台的默认编码:
String encoding=System.getProperty("file.encoding");
注:至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),
中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。
GBK编码是GB2312编码的扩展,包括简体中文和繁体中文,兼容GB2312.
二,服务器端指定字符编码向浏览器发送数据,并指定浏览器以指定字符编码打开
第一步: resp.setCharacterEncoding("utf-8");//服务器以指定字符编码向浏览器发送信息
第二步:resp.setHeader("content-type","text/html;charset=utf-8");//让浏览器以指定字符编码打开服务器发送过来的信息
当浏览器的默认编码与服务器指定的字符编码相同时,此时不需要第二步。
三,下载中文文件时,遇到文件名乱码问题的解决方案
String path=this.getServletContext().getRealPath("/img/我的照片.JPG");
String fileName=path.substring(path.lastIndexOf("\")+1);
resp.setHeader("content-disposition","attachment;filename="+new String( fileName.getBytes(),"iso8859-1") );
四,表单提交数据,在服务器端接收到的数据乱码
这种情况通常是浏览器编码格式与服务端解码格式不一致导致的。如jsp页面编码格式是utf-8,而服务器编解码是GBK格式。
如服务端收到的参数:String validate=req.getParameter("validateCode");
(1)当表单以post方式提交时,可以直接用resquest.setCharacterEncoding("utf-8")的方法;
(2)当表单以get方式提交时,用下面的方法。
validate=new String(validate.getBytes("iso8859-1"),"UTF-8");
此时以“UTF-8”解码是因为jsp页面的编码格式是"UTF-8",必须与jsp编码格式保持一致。