您的位置:首页 > 其它

彻底解决中文乱码问题

2012-11-29 14:19 204 查看
熟悉编码格式

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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: