一、JSP中文乱码问题
JSP页面的汉字显示为乱码,而英文和阿拉伯数字正常。
二、原因
汉字编码时用的字符集 与解码用的字符集不一致;所有的字符集都兼容ASCII码,所以英文、数字不存在乱码。
编号 |
名称 |
单字长度 |
能否对汉字编码 |
ASCII |
美国信息交换标准代码 |
7bit |
否 |
ISO-8859-1(Latin1) |
西文编码 |
8bit |
否 |
GBK(ANSI) |
汉字内码扩展规范 |
英文单字节,中文双字节 |
能 |
UTF-8 |
万国码 |
1~4个字节 |
能 |
注: GBK(“国标扩展”的拼音首字母)是对GB2312的扩展
三、方法
1. 通过Page指令的pageEncoding属性,指明JSP源文件使用哪个字符集编码。
2.在未告知的情况下,浏览器自动选择的解码字符集与网页的编码不一致:
l 浏览器用户手动纠正:查看->字符编码-> UTF-8或GBK
l 在JSP中使用response.setContentType(“text/html; charset=UTF-8”)明示
3. 用户通过HTML表单提交了中文,但是Tomcat、MySQL的默认字符集是ISO-8859-1。
l 对应POST表单,通过request. setCharacterEncoding(charset)明确告诉Tomcat用什么字符集;
对于GET表单,修改Tomcat/conf/server.xml中HTTP Connector的属性
useBodyEncodingForURI=”true” 或者 URIEncoding=”UTF-8”
l 将MySQL的字符集,设置为UTF-8或GBK
结论:默认靠不住,最好明确指定UTF-8或GBK