----1,-----------------------超链接中带中文-------------------------------------
jsp网页开发中超链接传递参数中文时,获取到的“乱码”不是真的乱码,而是另一种编码方式,所以还原成它真正的编码即可。
这里是链接
<a href="/simple/index.jsp?addr=中文"> click here </a>
获取时:
当页面编码是UTF-8
String addr=request.getParameter("addr");
addr=new String(addr.getBytes("ISO-8859-1"),"UTF-8");
当页面编码是GBK
String addr=request.getParameter("addr");
addr=new String(addr.getBytes("ISO-8859-1"),"GBK");
因为传输时用ISO-8859-1所以要先用ISO-8859-1取得字节码再用相应的编码来解析。准则就是页面是什么编码那么服务器获取的时候就用什么编码来显示,如何设置页面编码自己百度,比如 java编码、jsp编码(charset pageEncoding的区别)、控制台编码
当然,如果为了不要在获取时转来转去,如果你用的是Tomcat服务器,可以加上URIEncoding="UTF-8"。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
----2,-----------------------用form方式去提交中文参数-------------------------------------
最好用form方式去提交,这样页面上用的是什么编码服务器就用什么编码来解析可以了,方便的是在服务器端org.springframework.web.filter.CharacterEncodingFilter设置utf-8来解析,接下来用request.getParameter("xxx") 就可以直接用了。
----3,-----------------------浏览器地址栏上直接打中文-------------------------------------
但在浏览器地址栏上直接打中文时这里的编码就不由我们控制了,不同的浏览器在地址栏用的编码不一样,Firefox用的是utf-8, IE貌似是跟系统编码相关没去验证,直接地址栏上打中文是不可取的,服务器没法判断当时用的是什么编码。