引言:JSP中的中文乱码问题还是比较头疼的,对于使用中文的初学者来说更是一大阻碍。乱码其实归根结底就是因为储存和显示的时候字符的编码不匹配导致的。因此最好统一储存和显示的字符编码。(如有错误,欢迎指正,享受编程的快乐~:))
常见的乱码主要是
1.JSP页面乱码
2.request获取数据乱码
3.response发送数据乱码
4.HTML引入文件乱码
1.1当你的page指令中的pageEncoding设为ISO-8859-1时,若在页面编辑中使用了中文,则会导致无法进行保存。
<%@ page language="java" import="java.util.*"pageEncoding="ISO-8859-1"%>
因为默认的ISO-8859-1是纯英文字符集,因此当然不能在页面中出现中文字符。
解决方案1:将pageEncoding属性改为utf-8即可
解决方案2:通过设置IDE中JSP的默认编码格式,这样每次生成的JSP模板中pageEncoding属性都是utf-8了
1.2 当在浏览器中显示JSP页面时出现中文乱码现象
解决方案:将HTML模板代码中<meta>标签中的contentType属性contentType=”text/html; charset=utf-8”
表示页面的内容类型为html的文本格式,其中的字符集是utf-8
注意区分这里提到的charset以及pageEncoding
前者是指在浏览器端显示的字符编码,后者是指JSP页面本身的字符编码,如图所示
2.在使用request获取请求的时候,如果未进行request的编码设置,那么在客户端的用户输入中文后传递进来便会得到乱码
解决方案:在获取request.getParameter()参数前,设置request.setCharacterEncoding(“utf-8”)
即可(这种方式只能解决用表单提交或post提交时出现的乱码)
3.在使用URL传递参数的时候,如果传递了中文,那么就算设置了request的字符编码仍旧
还是乱码
解决方案:在TomCat目录下的conf目录下的server.xml中修改connector参数
<Connector port="8080"protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443"URIEncoding="utf-8"/>
添加了URIEncoding="utf-8"(这种方式只能解决通过URL传递参数时出现的乱码)
4.在使用<% page include=”a.html” %>这个JSP指令标记来引入html文件的时候,若该html文件中包含中文则在显示页面上会出现乱码,此时需要再这个html文件最上面一行添加<%@ pagelanguage=”java” import=”java.util.*” pageEncoding=”utf-8” %>