彻底解决中文乱码问题

熟悉编码格式
ISO8859-1:属于单字节编码,最多能表示的字符范围是0~255,应用于英文系列。
GB2312/GBK:属于汉字的国标码,专门用来表示汉字,是双字节编码,而英文字母兼容ISO8859-1编码。
Unicode :属于最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有4字节的)编码,包括英文字母在内。
UTF-8 :UTF编码兼容ISO8859-1编码,同时也可以用来表示所有语言的字符。

熟悉Web应用程序中与编码相关的部分
JSP编译:指定文件的存储编码,很明显,该设置应该置于文件的开头
JSP输出 :指定文件输出到Browser时使用的编码,该设置也应该置于文件的开头
META设置:指定网页使用的编码,该设置对静态网页尤其有作用。因为静态网页无法采用JSP的设置,而且也无法执行response.setCharacterEncoding()。
form设置:当浏览器提交表单时,可指定相应的编码

熟悉Web应用程序乱码产生的原因
JSP页面被编译为class时,如果未指定字符集,默认使用ISO8859-1的编码格式,这样中文会出现乱码。
使用表单时如果设定提交方式为POST而没有设置提交的编码格式,则会以ISO8859-1方式进行提交,而接受的JSP却以UTF-8的方式接受,这样也会导致乱码。
表单使用时如果设定提交方式为GET而没有设置提交的编码格式,Tomcat会以GET的默认编码方式ISO8859-1对汉字进行编码,编码后追加到URL,导致接受页面得到的参数为乱码。

解决乱码
设置文件本身的编码格式。这可以在Eclipse或MyEclipse中进行设置。执行Window→Preferences菜单命令,在弹出的对话框中进行设置即可。
在JSP页面上指定字符集。
数据库连接时指定的字符集。
在程序获取页面数据时使用如下代码:
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");

你可能感兴趣的:(javaweb)