<c:forEach var="me" items="${fileNameMap}">
<div class="downfile">
<c:url value="/DownloadFile" var="downurl">
<c:param name="filename" value="${me.key}"></c:param>
</c:url>
${me.value}<a href="${downurl}">下载</a>
</div>
<br />
</c:forEach>
如上,这是jsp的页面,使用jstl获取servlet的值,但是我用另外一个servlet想获取<c:param name="filename" value="${me.key}"></c:param>的值却中文乱码,我用String filename=request.getParameter("filename");获取<c:param>的值,然后用
filename=new String(filename.getBytes("ISO-8859-1"),"utf-8"));来解决中文乱码还是没用,中文还是变成????了。望大佬们帮帮萌新~
先看下log里是不是乱码,log里不是的话,就是jsp页面设置有问题。
说下log里是乱码的问题,通常Tomcat在8.0之前默认字符集是ISO-8859-1,8.0之后是UTF-8,所以8.0以后你用
filename=new String(filename.getBytes("ISO-8859-1"),"utf-8"))
未必能解决问题,还需要修改Tomcat配置,在server.xml
的Connector
中增加这个属性:URIEncoding="ISO-8859-1"
。另外,查一下页面是不是编码成其他字符集,如gbk了,尽可能用通用的字符集如utf-8。