关于java后台获取jstl<c:param></c:param>的值中文乱码

                        <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"));来解决中文乱码还是没用,中文还是变成????了。望大佬们帮帮萌新~

阅读 3.3k
1 个回答

先看下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.xmlConnector中增加这个属性:URIEncoding="ISO-8859-1"

另外,查一下页面是不是编码成其他字符集,如gbk了,尽可能用通用的字符集如utf-8。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题