我流程里,使用的是gbk,或gb2312编码格式,utf-8还没试过。
1)jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
//1.下面这句是解决乱码的关键之一,下面这句不仅影响中文,还影响布局,我之前布局时用utf-8,现在又改为gb2312,放在IE8里布局乱掉,firefox里正常。
<%@page contentType="text/html; charset=gb2312" %>
<%request.setCharacterEncoding("GB2312"); %>
2)服务器端,servlet里:
把从界面获得的参数,转成gb2312,因为浏览器默认传参数的编码是iso-8859-1
String searchW = req.getParameter("searchWord");
//2.下面这句是解决乱码的关键之一
String searchWord = new String(searchW.getBytes("iso-8859-1"),"gb2312");
下面这两句我做了测试,加了和没加只要上面的步骤正确,都可以显示中文。不过我还是加了
req.setCharacterEncoding("GB2312");
resp.setContentType("text/html;chartset=GB2312");
3)数据库端,把数据库编码也设为gbk.
我今天也碰到了一个头疼的问题:如果把chartset utf-8改为gb2312,IE8里的网页布局就会有点乱。firefox还是正常,如果不改为gb2312中文数据又会出现乱码。所以页面的编码,在IE8里还会影响到布局。(其他IE版本没做测试)
<%@page contentType="text/html; charset=utf-8" %><!-- This sentence decide the css and the unreadable code-->
后来我把,所有的css文件,都保存为gbk的编码格式,把css里的中文乱码都删掉,在IE8中的布局才恢复正常。
附带查看操作系统编码的Java程序:
public classShowSystemDefaultEncoding {
public static void main(String[]args) {
String encoding =System.getProperty("file.encoding");
System.out.println(encoding);
}}