操作系统的字符集是啥?莫非是GBK?然后你JSP及Java源码的字符集是啥?莫非是UTF-8?

解决方案 »

  1.   

    都是GBK,我改成UTF-8也还是不行,第二个问题我解决了,就第一个还卡在那儿
      

  2.   

    曾 这个就是“曾”的Unicode编码。不过你还是试试看,直接在浏览器的地址栏输入:
      http://localhost:8080/load/uploadFiles/曾.png
    是否能正确显示图片。另外也看看硬盘的uploadFiles目录中,在cmd窗口下,dir 能看到正确的文件名么?
      

  3.   


    这算是个好消息。那么你只需要设法让:
      <img src="/load/uploadFiles/&#26366;.png" />
    中的URL解码成:
      <img src="/load/uploadFiles/曾.png" />
    就行了。给你个函数处理下试试看:    public static String HTMLUnicodeToString(String str) {
            Pattern pattern = Pattern.compile("(?:&#(\\d{4,5});?)");
            Matcher matcher = pattern.matcher(str);
            while (matcher.find()) {
                str = matcher.replaceAll(String.valueOf((char) Integer.parseInt(matcher.group(1), 10)));
            }
            return str;
        }
    调用:
      System.out.println(HTMLUnicodeToString("http://localhost:8080/load/uploadFiles/&#26366;.png"));
      

  4.   

    <img src="/load/uploadFiles/&#26366;.png" />这段代码的JSP源码,是怎么样的?
      

  5.   


    <body>
        上传成功!<br/>
        文件标题:<s:property value=" + title"/><br/>
        文件为:<img src="<s:property value="'uploadFiles/' 
            + uploadFileName"/>"/>
    <br/>
        <s:debug/>
    </body>
    就这段
      

  6.   

    其实就是使用之前先转换下。
    JSP开始的地方:
    <%! 
    public static String HTMLUnicodeToString(String str) {
            Pattern pattern = Pattern.compile("(?:&#(\\d{4,5});?)");
            Matcher matcher = pattern.matcher(str);
            while (matcher.find()) {
                str = matcher.replaceAll(String.valueOf((char) Integer.parseInt(matcher.group(1), 10)));
            }
            return str;
        }
    %>后面:
    <% uploadFileName = HTMLUnicodeToString(uploadFileName) %>
    文件为:<img src="<s:property value="'uploadFiles/' + uploadFileName"/>"/><br/>其实最好定义成一个工具类,而不是直接定义在JSP中
      

  7.   

    我还是有点困惑,我重新质疑了一遍我的问题
    假如:我直接访问显示页面,succ.jsp显示页面直接打印图片
    直接打印英文图片
    <img src="uploadFiles/1.jpg"/>
    结果:显示一切正常
    直接打印中文图片
    <img src="uploadFiles/曾.jpg"/>
    结果:显示失败,查看图片属性URL地址正常,网页源代码正常,均为中文
    我直接填写的就是转码后的路径,可还是显示失败,我蛋碎了
      

  8.   

    难道struts2暗中做了什么手脚我不知道的
      

  9.   

    不会吧,你直接在HTML中写死:
       <img src="/load/uploadFiles/曾.jpg"/>
    无法访问?注意用绝对路径哦。
      

  10.   

    我是在jsp页面直接写的,就像这样
    <img src="uploadFiles/1.jpg"/>直接写死
    英文的图片都能输出来,中文的就邪门了
    再比如我直接在地址栏输入
    http://localhost:8080/load/uploadFiles/1.jpg显示正常
    http://localhost:8080/load/uploadFiles/曾.jpg显示失败
      

  11.   

    地址栏输入http://localhost:8080/load/uploadFiles/曾.jpg报404
    HTTP Status 404 - /zyw/uploadFiles/%E6%9B%BE.jpg
      

  12.   


    天啊,我在7楼问你,直接在浏览器的地址栏输入:
      http://localhost:8080/load/uploadFiles/曾.png
    是否能正确显示图片。你说都能现在19楼说不能了,前面那些转码啥的其实就白忙活了。
    另外,19楼的报错信息为啥换了个路径?跟你地址栏输入的路径不一致?
      

  13.   


    不好意思,都是我的错,7楼的时候我刚吃完饭,吃傻了
    对不起哈19楼是我重新新建了一个项目zyw,加入图片,然后访问的,ldh911眼睛好犀利啊
      

  14.   

    唉,问题关键在于,比如能保证浏览器地址栏直接输入:
       http://localhost:8080/load/uploadFiles/曾.png
    是可访问的,现在继续回到这个问题来研究。
    你用的是Tomcat,那么请检查下conf\server.xml这个配置文件,有没有这样一句话:
      <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="1000" 
    如果没有URIEncoding="UTF-8",请把它加上去;然后重启服务,再用全路径直接浏览器试试看。
      

  15.   

    我也是初学Strtus 2 我的是在struts.xml文件中<constant name="struts.i18n.encoding" value="UTF-8"></constant> 上传对应的action
    <action name="upload" class="org.xmh.demo.UploadAction">
    <interceptor-ref name="fileUpload">
    <!-- 配置允许上传的文件类型 -->
    <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>
    <!-- 配置允许上传的文件大小 -->
    <param name="maximumSize">1024000</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>
    <!-- 动态设置Action的属性值 -->
    <param name="savePath">/upload</param>
    <result name="input">/jsp/6/upload.jsp</result> 
    <result>/jsp/6/succ.jsp</result>
    </action>
    UploadAction类的savePath属性的get方法
    public String getSavePath() {
    return ServletActionContext.getServletContext().getRealPath(this.savePath);
    }
    对应的试图文件
    第一个文件为:<img src="<s:url value="/upload/"/><s:property value="uploadFileName[0]"/>"/><br>
    第二个文件为:<img src="<s:url value="/upload/"/><s:property value="uploadFileName[1]"/>"/><br>
    第三个文件为:<img src="<s:url value="/upload/"/><s:property value="uploadFileName[2]"/>"/><br>
    访问地址:http://127.0.0.1:8080/struts2Demo1/jsp/6/upload.action  struts2Demo1是项目名称upload文件夹在 struts2Demo1项目的根目录下
      

  16.   

    真是太感谢了,我也是遇到这个问题了,搞了好久呢!结果就是conf\server.xml这个配置文件里面差那句话!!!!