首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 高分请教!无法显示中文名的图片. [已结贴,结贴人:bobor_2008]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 15:20:35 楼主
    我要实现如下效果:
    1.实现在一个JSP页面中可以显示图片的效果.
    2.这个图片的文件名是中文的而且必须是中文的(这是人家客户要求的以"机构名+用户姓名+ID").
    3.我在JSP页面中可以获取这个路径.如:http://localhost:8080/snhy/uploads/aaa.jpg或http://localhost:8080/snhy/uploads/张三aaa.jpg
    4.显示英文和数字命名的图片都可以正常显示出来,如果要显示含有中文的图片就出问题了,显示不出来.

    我的解决办法:
    1.String tempphotoname=new String(photoname.getBytes("ISO-8859-1"), "UTF-8");//对其中文文件名转码但还是不显示.
    2.使用java.java.net.URLEncoder.encode(photoname,"UTF-8");//也是不行,

    3.也问了好多朋友,也从网上搜了N次最未找到答案,在此希望大家可以帮我想想办法(可不要说命名不用中文这个我也知道,就是客户比较挑剔必须是中文命名且读取的是中文命名的方法).


    首先谢谢大家来关注了,等待中…………………………
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 15:20:371楼 得分:0
    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-18 15:20:43的汇总数据:
    发帖数:9
    结贴数:7
    结贴率:77.78%
    楼主加油
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 15:30:392楼 得分:10
    http://topic.csdn.net/u/20080612/20/d31529ab-c98e-4893-931b-68cc0e9f5b87.html
    好像和你的一样
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 20:32:223楼 得分:3
    JSP 页编码改为 UTF-8 或 GBK。
    Java code
    <%@ page contentType="text/html; charset=UTF-8" %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-18 20:37:084楼 得分:7
    不行就加过滤器试试。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ilrxx
    • 等级:
    发表于:2008-06-18 23:39:165楼 得分:10
    java.java.net.URLEncoder.encode(photoname,"UTF-8");
    是photoname = java.net.URLEncoder.encode(photoname,"UTF-8");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 09:12:426楼 得分:10
    photoname = java.net.URLEncoder.encode(photoname,"UTF-8");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 09:16:427楼 得分:10
    Java code
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/> 中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 16:15:098楼 得分:0
    引用 5 楼 ilrxx 的回复:
    java.java.net.URLEncoder.encode(photoname,"UTF-8");
    是photoname = java.net.URLEncoder.encode(photoname,"UTF-8");


    不好意思.我用的是:
    java.net.URLEncoder.encode(photoname,"UTF-8");//也是不行,
    这一行没有错.


    谢谢大家了.
    我已经解决了.

    非常感谢大家的关注.

    希望大家能给我解决以下这个问题.这是个用下载从"url"传过来值的处理代码,url得到的是一个文件夹及下面的文件名如:"/uploads/中国dfs.pdf";

    Java code
    <%@ page contentType="text/html; charset=utf-8"%> <%@ page import="java.io.*" %> <% response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String url = request.getParameter("url"); int a=url.lastIndexOf("/"); String filename=new String(url.substring(a+1).getBytes("ISO-8859-1"), "UTF-8"); String tttt=request.getSession().getServletContext().getRealPath("/"); System.out.println(tttt+filename+" tttt"); String urlz = "D:/apache-tomcat-5.5.25/webapps/SNHY"+url; System.out.println(urlz+"======================"); File file = new File(urlz); System.out.println(urlz+"++++++++++++++++++++++++++++++"); // response.setHeader("Content-Disposition", "attachment; filename=download.jpg" ); response.setHeader("Content-Disposition", "attachment; filename=" +filename); [color=#FF0000]//filename为中文的文件名,我想下载的时候默认名是原来的文件名所以就这样写了[/color] System.out.println("|||||||||||||||"+urlz); //以流的形式写出文件 try{ FileInputStream bis = new FileInputStream(file); OutputStream bos = response.getOutputStream(); byte[] buff = new byte[1024]; int readCount = 0; readCount = bis.read(buff); while (readCount != -1) { bos.write(buff, 0, readCount); readCount = bis.read(buff); } if (bis != null) { bis.close(); } if (bos != null) { bos.close(); } //下载完毕,给浏览器发给完毕的头 response.setStatus(HttpServletResponse.SC_OK); response.flushBuffer(); //解决getOutputStream() has already been called for this response 错误 out.clear(); out=pageContext.pushBody(); }catch(Exception e){ } %>


    我会加分给解答者的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 16:16:569楼 得分:0
    引用 1 楼 java2000_net_test 的回复:
    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-18 15:20:43的汇总数据:
    发帖数:9
    结贴数:7
    结贴率:77.78%
    楼主加油


    不好意思,我可能忘了结贴了吧.

    我以后会多检查几遍的.
    谢谢提醒.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-21 14:20:2210楼 得分:0
    我上面那个也解决了.


    谢谢大家的关注.
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved