产生乱码的原因主要是两端编码/解码不一致问题
1.前台页面的编码格式和后台代码的编码格式不一致,现在一般统一使用utf-8这种编码格式
就需要将前台jsp编码指定为utf-8
原因:
在get提交时,参数和数据会以name/value由&分开,url的编码是ASCII码前面加上%
汉字及一些特殊符号无法转成ASCII码,它们会被浏览器转化成iso-8859-1的编码格式
这时有以下解决方式
a.用代码在后台接收时转码一下,将iso-8859-1码的数据转成需要的编码格式(如utf-8)
b.将服务器的接收格式修改一下,比如将tomcat的接收格式改为iso8859-1
在server.xml文件中,修改以下代码
对于POST方式,表单中的参数值对是通过request包发送给服务器,此时浏览器会根据网页的ContentType("text/html; charset=UTF-8")中指定的编码进行对表单中的数据进行编码,然后发给服务器。
由于往往前台编码和后台编码设置一致,所以我们可以在服务器端的程序中我们可以通过request.getParameter(java)获得正确的数据。
参考资料
[1].http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
[2].http://blog.csdn.net/lfsf802/article/details/7232834
1.前台页面的编码格式和后台代码的编码格式不一致,现在一般统一使用utf-8这种编码格式
就需要将前台jsp编码指定为utf-8
<%@page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
后台的接收的编码格式为项目的编码格式,可以在开发工具中将编码格式改为utf-8
原因:
在get提交时,参数和数据会以name/value由&分开,url的编码是ASCII码前面加上%
汉字及一些特殊符号无法转成ASCII码,它们会被浏览器转化成iso-8859-1的编码格式
这时有以下解决方式
a.用代码在后台接收时转码一下,将iso-8859-1码的数据转成需要的编码格式(如utf-8)
String param = request.getParameter("zhongwen");
param = new String(param.getBytes("iso8859-1"),"utf-8");b.将服务器的接收格式修改一下,比如将tomcat的接收格式改为iso8859-1
在server.xml文件中,修改以下代码
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
c.将form表单提交方式变为post方式,即添加method="post"
对于POST方式,表单中的参数值对是通过request包发送给服务器,此时浏览器会根据网页的ContentType("text/html; charset=UTF-8")中指定的编码进行对表单中的数据进行编码,然后发给服务器。
由于往往前台编码和后台编码设置一致,所以我们可以在服务器端的程序中我们可以通过request.getParameter(java)获得正确的数据。
参考资料
[1].http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
[2].http://blog.csdn.net/lfsf802/article/details/7232834

浙公网安备 33010602011771号