index.jsp中设置编码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta name="content-type" content="text/html; charset=utf-8">
servlet中设置request与response对象的相关编码:
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
尽管使用了tomcat8及以上,依然手动添加编码:
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="utf-8"/>
但是jsp通过get方式提交后,通过req.getParameter("uname")获取参数并输出,依然会报错:java.io.CharConversionException: Not an ISO 8859-1 character
如果参数为“123zg中”,输出结果为“123zg”。
最后发现是自己的out对象获取方式错了:response.getOutputStream();
改为:
PrintWriter outPrintWriter = resp.getWriter();
outPrintWriter.write(uname+"--"+uage);
就能够正常显示中文了