Servlet乱码问题的解决
2010-04-07 00:46
197 查看
以下分析基于以下假设:编码格式统一采用UTF-8
post方式:
服务端:
在第一次调用request.getParameter时,会对Parameter进行解析,如果没有设置解析(解码)所用的encoding,则使用默认的编码org.apache.coyote.Constants.DEFAULT_CHARACTER_ENCODING("ISO-8859-1")对参数进行解析。因此如果参数中包含中文,解析出来的就是乱码了。因此如果要支持对中文的解析,就要在第一次调用request.getParameter前,先设置解析参数时用的编码格式,如:
request.setCharacterEncoding("UTF-8");
客户端:
同样,在客户端,如果要让浏览器支持中文的显示,就必须设置网页的编码格式,如:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
get方式:
客户端:
如果uri中包含中文,则必须对其进行编码:
<a href="download?filename=<%=java.net.URLEncoder.encode(file,"UTF-8") %>"><%=file %></a>
这里采用utf8编码。
服务端:
服务端必须知道客户端采用的编码方式,然后采用同样的方式解码。可以在server.xml中告诉服务端客户端的编码方式:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
对于form中的get方式,在提交后,浏览器会使用当前页面的编码格式,对中文参数进行uri编码,因此不用人为的进行编码了。只要确保页面的编码也是utf8即可:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
post方式:
服务端:
在第一次调用request.getParameter时,会对Parameter进行解析,如果没有设置解析(解码)所用的encoding,则使用默认的编码org.apache.coyote.Constants.DEFAULT_CHARACTER_ENCODING("ISO-8859-1")对参数进行解析。因此如果参数中包含中文,解析出来的就是乱码了。因此如果要支持对中文的解析,就要在第一次调用request.getParameter前,先设置解析参数时用的编码格式,如:
request.setCharacterEncoding("UTF-8");
客户端:
同样,在客户端,如果要让浏览器支持中文的显示,就必须设置网页的编码格式,如:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
get方式:
客户端:
如果uri中包含中文,则必须对其进行编码:
<a href="download?filename=<%=java.net.URLEncoder.encode(file,"UTF-8") %>"><%=file %></a>
这里采用utf8编码。
服务端:
服务端必须知道客户端采用的编码方式,然后采用同样的方式解码。可以在server.xml中告诉服务端客户端的编码方式:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
对于form中的get方式,在提交后,浏览器会使用当前页面的编码格式,对中文参数进行uri编码,因此不用人为的进行编码了。只要确保页面的编码也是utf8即可:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
相关文章推荐
- Servlet乱码问题解决
- Servlet及JSP解决中文乱码问题
- 解决 jsp传中文参数到servlet出现乱码问题
- servlet解决乱码问题
- 关于servlet中文乱码问题如何解决
- Servlet开发过程中乱码问题解决
- jsp传参 servlet接收中文乱码问题的解决方法
- jsp传值到servlet中文乱码问题解决
- Filter解决servlet接收前台传的中文字符乱码问题
- 解决 Servlet 乱码问题
- Servlet——解决全站乱码问题(过滤器)
- JSP\SERVLET\SPRING\MYSQL 、spring过滤器,乱码问题解决
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
- 解决servlet中文数据传入到数据库乱码问题
- 采用Filter的方法解决HttpServletRequest.getParameter乱码的问题
- 解决Servlet的一些乱码问题
- Servlet接收JSP参数乱码问题解决办法
- servlet中中文乱码问题的解决
- jQuery Ajax传值到Servlet出现乱码问题的解决方法
- 完美解决在Servlet中出现一个输出中文乱码的问题