问题描述:项目WebRoot下的down文件夹有展示的图片,其中图片名字有中文和英文如图:
我想在页面进行展示,点击的时候能够查看图片:
页面的代码如下:
  
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.net.URL"%>
<%@page import="java.io.File"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URLDecoder"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
 File file=new File(application.getRealPath("/down")); List<String> files=new ArrayList<String>();
 for(String s:file.list()){
 files.add(s);
 }
 pageContext.setAttribute("files",files);
%>
<p>文件列表</p>
<c:forEach var="filename" items="${files}">
   <script>
   var filename='${filename}';
   var str="<a href='<%=application.getContextPath()%>/down/"+filename+"'>"+filename+"</a>";
   document.write(str);
    </script>
</c:forEach>
</body>
</html>
展示的效果如下:点击“1.jpg”出现如下图:但是点击带中文的“日本妞.jpg”时候就会找不到,求解决方法。

解决方案 »

  1.   

    你在后台把传入的“日本妞”打印出来应该是类似“%E6%A5”的东西而不是中文。
    如果是这样的话可以用URLDecoder.decode($parameter, "UTF-8")转换为中文。
      

  2.   

    本人亲自测试,各种浏览器下 都不会出现该问题。。那就是你没有统一编码格式导致的。。那只能解码了 decodeURIComponent(filename);
      

  3.   

    直接写个过滤器或更改服务器(tomcat)的编码为UTF-8
      

  4.   

    对于这种url请求的属于get请求,设置request编码是没用的,可以用需要用到解码
      

  5.   

    server.xml里面的Connector节点加个 URIEncoding="UTF-8" 属性,这样?